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 相关文章推荐
如何过滤高亮显示非法字符
Oct 09 PHP
用PHP和ACCESS写聊天室(五)
Oct 09 PHP
一个PHP日历程序
Dec 06 PHP
PHP5.3.1 不再支持ISAPI
Jan 08 PHP
mysql总结之explain
Feb 27 PHP
PHP时间格式控制符对照表分享
Jul 23 PHP
PHP中的替代语法简介
Aug 22 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
Oct 20 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
Aug 17 PHP
php实现产品加入购物车功能(1)
Jul 23 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
Jun 05 PHP
WordPress伪静态规则设置代码实例
Dec 10 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
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
WordPress迁移时一些常见问题的解决方法整理
2015/11/24 PHP
php 三元运算符实例详细介绍
2016/12/15 PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
2020/05/27 PHP
jQuery之按钮组件的深入解析
2013/06/19 Javascript
JavaScript实现的多个图片广告交替显示效果代码
2015/09/04 Javascript
全面介绍javascript实用技巧及单竖杠
2016/07/18 Javascript
AngulerJS学习之按需动态加载文件
2017/02/13 Javascript
js replace()去除代码中空格的实例
2017/02/14 Javascript
Node.js websocket使用socket.io库实现实时聊天室
2017/02/20 Javascript
react-native组件中NavigatorIOS和ListView结合使用的方法
2017/09/30 Javascript
解决easyui日期时间框ie的兼容的问题
2018/03/01 Javascript
详解vue-cli下ESlint 配置说明
2018/09/03 Javascript
JavaScript创建对象方法实例小结
2018/09/03 Javascript
详解Django中的ifequal和ifnotequal标签使用
2015/07/16 Python
python 处理dataframe中的时间字段方法
2018/04/10 Python
Python实现带下标索引的遍历操作示例
2019/05/30 Python
python 牛顿法实现逻辑回归(Logistic Regression)
2020/10/15 Python
收集的22款给力的HTML5和CSS3帮助工具
2012/09/14 HTML / CSS
Lookfantastic意大利官网:英国知名美妆购物网站
2019/05/31 全球购物
会计助理的岗位职责
2013/11/29 职场文书
工地资料员岗位职责
2013/12/31 职场文书
写给老师的表扬信
2014/01/21 职场文书
酒店中秋节活动方案
2014/01/31 职场文书
艺校音乐专业自我鉴定范文
2014/03/01 职场文书
二年级小学生评语
2014/04/21 职场文书
青春无悔演讲稿
2014/05/08 职场文书
生日庆典策划方案
2014/06/02 职场文书
2014年庆祝国庆65周年演讲稿
2014/09/21 职场文书
2014年圣诞节寄语
2014/12/08 职场文书
2015年大班保育员工作总结
2015/05/18 职场文书
四年级作文之植物
2019/09/20 职场文书
MySQL Router实现MySQL的读写分离的方法
2021/05/27 MySQL
java基础——多线程
2021/07/03 Java/Android
Java 在生活中的 10 大应用
2021/11/02 Java/Android
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
2022/04/21 Python