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学习之 数组声明
Jun 09 PHP
php读取二进制流(C语言结构体struct数据文件)的深入解析
Jun 13 PHP
ThinkPHP实现批量删除数据的代码实例
Jul 02 PHP
php修改指定文件后缀的方法
Sep 11 PHP
Thinkphp中数据按分类嵌套循环实现方法
Oct 30 PHP
php实现的树形结构数据存取类实例
Nov 29 PHP
PHP常见漏洞攻击分析
Feb 21 PHP
深入浅析yii2-gii自定义模板的方法
Apr 26 PHP
Laravel中如何增加自定义全局函数详解
May 09 PHP
php二维码生成以及下载实现
Sep 28 PHP
PHP htmlentities()函数用法讲解
Feb 25 PHP
PHP面向对象程序设计重载(overloading)操作详解
Jun 13 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使用Memcache时模拟命名空间及缓存失效问题的解决
2016/02/27 PHP
PHP实现重载的常用方法实例详解
2017/10/18 PHP
Colortip基于jquery的信息提示框插件在IE6下面的显示问题修正方法
2010/12/06 Javascript
使用jQuery设置disabled属性与移除disabled属性
2014/08/21 Javascript
功能强大的jquery.validate表单验证插件
2016/11/07 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
JavaScript 巧学巧用
2017/05/23 Javascript
详解javascript appendChild()的完整功能
2018/08/18 Javascript
vue 列表页跳转详情页获取id以及详情页通过id获取数据
2019/03/27 Javascript
js/jQuery实现全选效果
2019/06/17 jQuery
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
2020/05/28 Javascript
[43:24]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第二场 12.12
2020/12/17 DOTA
python中将函数赋值给变量时需要注意的一些问题
2017/08/18 Python
15行Python代码带你轻松理解令牌桶算法
2018/03/21 Python
对python 各种删除文件失败的处理方式分享
2018/04/24 Python
Django使用详解:ORM 的反向查找(related_name)
2018/05/30 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
2018/07/10 Python
基于数据归一化以及Python实现方式
2018/07/11 Python
Python 移动光标位置的方法
2019/01/20 Python
Python实现点阵字体读取与转换的方法
2019/01/29 Python
Python Numpy 自然数填充数组的实现
2019/11/28 Python
pandas 中对特征进行硬编码和onehot编码的实现
2019/12/20 Python
matlab、python中矩阵的互相导入导出方式
2020/06/01 Python
pytorch掉坑记录:model.eval的作用说明
2020/06/23 Python
Python 实现将某一列设置为str类型
2020/07/14 Python
前端面试必备之CSS3的新特性
2017/09/05 HTML / CSS
有机婴儿毛毯和衣服:Monica + Andy
2020/03/01 全球购物
如何打开WebSphere远程debug
2014/10/10 面试题
.net软件工程师面试题
2015/03/31 面试题
最新英语专业学生求职信范文
2013/09/21 职场文书
竞聘演讲稿范文
2014/01/12 职场文书
优秀幼教自荐信
2014/02/03 职场文书
机关保密承诺书
2014/06/03 职场文书
怎样写离婚协议书
2014/09/10 职场文书
2015年高三班主任工作总结
2015/05/21 职场文书
高中数学课堂教学反思
2016/02/18 职场文书