openPNE常用方法分享


Posted in PHP onNovember 29, 2011
<?php include_partial('sidemenu',array('form'=>'asdfgasgsad'));?>这句话意思是包含'_sidemenu.php'并往其页面传一系列参数,'_sidemenu.php'页即可直接使用$form变量中的值 
<?php 
op_include_box('vote_question_create_box','<strong>asdfasdf</strong>',array('title'=>'创建问题','moreInfo'=>array('创建问题',link_to('创建问题2','@my_index')))); 
?> 
<?php 
op_include_box('vote_question_create_box',get_slot('pager'),array('title'=>'创建问题','moreInfo'=>array('创建问题',link_to('创建问题2','@my_index')))); 
?> 
'vote_question_create_box'只是一个标记,'<strong>asdfasdf</strong>'或 get_slot('pager')则是要输出到页面上标题下的信息(这个方法里要包含slot只能用get_slot()不能用include_slot(), 
而在页面中要包含slot则必须使用include_slot()) 
第三个数组参数中的键值名称title是固定的,是该段'vote_question_create_box'显示的标题,后面的'moreInfo'键名也是固定键值对应的数组则是罗列显示的内容列表 <?php slot('pager'); ?>设定一个slot段落 
<?php echo 'asdfasgsadfasdfaaaaaaaaaaaaaaaaaaaaaa' ?> 
<?php end_slot() ?> 
<?php include_slot('pager'); ?>包含指定的slot段落,设定的slot段落必须通过包含才能在页面上显示 
<?php 
op_include_form('vote_question_from',$form,array('title'=>'编辑问题','url'=>url_for('@vote_update?id='.$form->getObject()->getId()),)); 
?>包含一个表单对象,'vote_question_from'为标识名,$form为对应动作传来的表单对象,第三个数组参数title键值也url键值是固定的,分别对应显示的标题名和表单提交路径 
对应动作内容为 
<?php 
public function executeEdit(sfWebRequest $request){ 
$object = $this->getRoute()->getObject(); 
//如果不是作者屏幕上显示404 
$this->forward404Unless($this->getUser()->getMemberId() == $object->getMemberId());//$object->getMemberId()为传递过来的id值对应的那条记录的member_id字段值 
$this->form = new VoteQuestionForm($object); 
//访问此动作路径http://localhost/openpne/web/vote/edit/1 
} 
?> 
<?php op_include_pager_navigation($pager, '@tasks_list?page=%d'); ?>用于分页时前后翻页的超链接 
$pager来自动作里的 $this->pager = Doctrine::getTable('VoteQuestion')->getListPager($request->getParameter('page')); 
PluginVoteQuestionTable类getListPager()方法里的内容↓ 
<?php 
class PluginVoteQuestionTable extends Doctrine_Table 
{ 
public function getListPager($page = 1,$size = 20) 
{ 
$query = $this->createQuery()->orderBy('updated_at DESC'); 
$pager = new sfDoctrinePager('VoteQuestion',$size);//创建一个某表的分页对象,并传一个每页显示多少记录值 
$pager->setQuery($query);//传一个查询语句对象 
$pager->setPage($page);//设返回显示的页数 
$pager->init(); 
return $pager; 
} 
} 
?> 
对应前台页面对分页结果集的沥遍 
<?php foreach($pager->getResults() as $item): //利用openPNE分页机制获取指定分页结果集并沥遍每一条记录?> 
<dl> 
<dt><?php echo op_format_date($item->getUpdatedAt(),'f') //'f'代表一种显示格式?></dt><!--op_format_date()方法只是把2011-11-10各种中的‘-'换成汉字年月日--> 
<dd><?php echo link_to(sprintf("%s(%d)",$item->getTitle(),count($item->getVoteAnswers())),'@vote_show?id='.$item->getId()) ?></dd><!--$item->getTitle()获取该条记录指定字段title值--> 
</dl> 
<?php endforeach; ?> 
<?php echo link_to('sdsfg','@vote_show?id='.$item->getId()) ?>相当于<a href='vote/show?id=...'>sdsfg</a> 
表名是驼峰模式在数据库里以下划线表示,字段名也是如此 
链接的 
就算不用方法也可以直接在action="此可直接写web/后的====模块名/动作名====或路由中设定好的web后的路径" 
动作里的 
$this->tasksObject = $this->getRoute()->getObject(); 
$this->getRoute()->getObject();//获取传过来的id参数值对应的表中的那条信息对象可通过get+字段名()获取字段值,如在页面中$tasksObject-getId(); 
至于如何确定获取的是哪个表则是通过路由类设置该动作路由时确定的,如下例确定的是vote_question表 
例 
<?php 
class opVotePluginFrontendRouteCollection extends sfRouteCollection 
{ 
public function __construct(array $options) 
{ 
parent::__construct($options); 
$this->routes = array( 
'vote_edit' => new sfDoctrineRoute( 
'/vote/edit/:id', 
array('module' => 'vote', 'action' => 'edit'), 
array('id' => '\d+', 'sf_method' => array('get')), 
array('model' => 'VoteQuestion', 'type' => 'object') 
), 
); 
} 
} 
?>
PHP 相关文章推荐
PHP获取网卡地址的代码
Apr 09 PHP
PHP生成自适应大小的缩略图类及使用方法分享
May 06 PHP
PHP获取windows登录用户名的方法
Jun 24 PHP
php实现与erlang的二进制通讯实例解析
Jul 23 PHP
PHP中使用SimpleXML检查XML文件结构实例
Jan 07 PHP
php实现通过cookie换肤的方法
Jul 13 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
Jun 28 PHP
PHP实现随机生成水印图片功能
Mar 22 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
Apr 05 PHP
PHP支付宝当面付2.0代码
Dec 21 PHP
PDO::setAttribute讲解
Jan 29 PHP
PHP convert_uudecode()函数讲解
Feb 14 PHP
使用php+Ajax实现唯一校验实现代码[简单应用]
Nov 29 #PHP
php从右向左/从左向右截取字符串的实现方法
Nov 28 #PHP
PHP的array_diff()函数在处理大数组时的效率问题
Nov 27 #PHP
PHP 中检查或过滤IP地址的实现代码
Nov 27 #PHP
PHP中usort在值相同时改变原始位置问题的解决方法
Nov 27 #PHP
PHP中strtotime函数使用方法详解
Nov 27 #PHP
遍历指定目录下的所有目录和文件的php代码
Nov 27 #PHP
You might like
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
2012/09/23 PHP
PHP中trim()函数简单使用指南
2015/04/16 PHP
PHP命名空间namespace用法实例分析
2016/09/27 PHP
js调用flash的效果代码
2008/04/26 Javascript
javascript带回调函数的异步脚本载入方法实例分析
2015/07/02 Javascript
javascript中window.open在原来的窗口中打开新的窗口(不同名)
2015/11/15 Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
2017/01/13 Javascript
js从输入框读取内容,比较两个数字的大小方法
2017/03/13 Javascript
Vue组件tree实现树形菜单
2017/04/13 Javascript
jQuery实现点击下拉框中的值累加到文本框中的方法示例
2017/10/28 jQuery
Vue中的scoped实现原理及穿透方法
2018/05/15 Javascript
Jquery获取radio选中值实例总结
2019/01/17 jQuery
基于jquery实现的tab选项卡功能示例【附源码下载】
2019/06/10 jQuery
vue实现页面滚动到底部刷新
2019/08/16 Javascript
Element Alert警告的具体使用方法
2020/07/27 Javascript
[02:54]DOTA2英雄基础教程 撼地者
2014/01/14 DOTA
Python中Continue语句的用法的举例详解
2015/05/14 Python
Python 模拟员工信息数据库操作的实例
2017/10/23 Python
python re模块findall()函数实例解析
2018/01/19 Python
Python不使用int()函数把字符串转换为数字的方法
2018/07/09 Python
对python调用RPC接口的实例详解
2019/01/03 Python
使用Python实现跳帧截取视频帧
2019/05/31 Python
Python-while 计算100以内奇数和的方法
2019/06/11 Python
Django的Modelforms用法简介
2019/07/27 Python
25个CSS3动画按钮和菜单教程分享
2012/10/03 HTML / CSS
一个基于canvas的移动端图片编辑器的实现
2020/10/28 HTML / CSS
印度尼西亚综合购物网站:Lazada印尼
2016/09/07 全球购物
英国第一蛋白粉品牌:Myprotein
2016/09/14 全球购物
Clarks鞋法国官方网站:英国其乐鞋品牌
2018/02/11 全球购物
eHarmony英国:全球领先的认真恋爱约会平台之一
2020/11/16 全球购物
小学生民族团结演讲稿
2014/08/27 职场文书
2014教师个人自我评价范文
2014/09/13 职场文书
2014年房地产工作总结范文
2014/11/19 职场文书
2015年房地产个人工作总结
2015/05/26 职场文书
退休欢送会致辞
2015/07/31 职场文书
Javascript使用integrity属性进行安全验证
2021/11/07 Javascript