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 相关文章推荐
discuz安全提问算法
Jun 06 PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
Mar 05 PHP
PHP 杂谈《重构-改善既有代码的设计》之五 简化函数调用
May 07 PHP
PHP修改session_id示例代码
Jan 08 PHP
php的declare控制符和ticks教程(附示例)
Mar 21 PHP
Symfony2学习笔记之系统路由详解
Mar 17 PHP
Yii数据读取与跳转参数传递用法实例分析
Jul 12 PHP
PHP socket 模拟POST 请求实例代码
Jul 18 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
Jun 04 PHP
Thinkphp5 自定义上传文件名的实现方法
Jul 23 PHP
php进行md5加密简单实例方法
Sep 19 PHP
php png失真的原因及解决办法
Oct 24 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(3)
2006/10/09 PHP
实现PHP多线程异步请求的3种方法
2014/01/17 PHP
php判断类是否存在函数class_exists用法分析
2014/11/14 PHP
一个经典的PHP文件上传类分享
2014/11/18 PHP
LazyForm jQuery plugin 定制您的CheckBox Radio和Select
2009/10/24 Javascript
input按钮的事件处理大全
2010/12/10 Javascript
利用js动态添加删除table行的示例代码
2013/12/16 Javascript
jquery控制select的text/value值为选中状态
2014/06/03 Javascript
node.js中Socket.IO的进阶使用技巧
2014/11/04 Javascript
浅谈javascript属性onresize
2015/04/20 Javascript
JS建造者模式基本用法实例分析
2015/06/30 Javascript
微信小程序单选radio及多选checkbox按钮用法示例
2019/04/30 Javascript
Node.js实现简单的爬取的示例代码
2019/06/25 Javascript
Nodejs 数组的队列以及forEach的应用详解
2021/02/25 NodeJs
[56:45]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第一局
2016/02/28 DOTA
Python2.x和3.x下maketrans与translate函数使用上的不同
2015/04/13 Python
Python通过poll实现异步IO的方法
2015/06/04 Python
python 读取文件并替换字段的实例
2018/07/12 Python
在Django下测试与调试REST API的方法详解
2019/08/29 Python
numpy 声明空数组详解
2019/12/05 Python
Python实现i人事自动打卡的示例代码
2020/01/09 Python
解决Python import docx出错DLL load failed的问题
2020/02/13 Python
jupyter notebook 实现matplotlib图动态刷新
2020/04/22 Python
Python参数传递机制传值和传引用原理详解
2020/05/22 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
2020/11/05 Python
世界上最大的专业美容用品零售商:Sally Beauty
2017/07/02 全球购物
美国知名的家庭连锁百货商店:Boscov’s
2017/07/27 全球购物
如何用Java实现列出某个目录下的所有子目录
2015/07/20 面试题
入党自我鉴定
2014/03/25 职场文书
安全生产管理责任书
2014/04/16 职场文书
安全协议书
2014/04/23 职场文书
校园文明倡议书
2014/05/16 职场文书
七一慰问简报
2015/07/20 职场文书
担保书怎么写 ?
2019/04/22 职场文书
个人的事迹材料怎么写
2019/04/24 职场文书
Python开发五子棋小游戏
2022/04/28 Python