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程序中的常见漏洞进行攻击(上)
Oct 09 PHP
最令PHP初学者们头痛的十四个问题
Jan 15 PHP
Window 7/XP 安装Apache 2.4与PHP 5.4 的过程详解
Jun 02 PHP
PHP 下载文件时自动添加bom头的方法实例
Jan 10 PHP
php语言的7种基本的排序方法
Dec 28 PHP
分析PHP中单双引号的误区和双引号小隐患
Jul 19 PHP
php注册和登录界面的实现案例(推荐)
Oct 24 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
Jun 12 PHP
ThinkPHP框架实现的邮箱激活功能示例
Jun 15 PHP
php实现银联商务公众号+服务窗支付的示例代码
Oct 12 PHP
Yii框架小部件(Widgets)用法实例详解
May 15 PHP
PHP数组Key强制类型转换实现原理解析
Sep 01 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 define()函数以及defined()函数的用法详解
2013/06/05 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
2019/02/15 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
2019/04/02 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
2021/02/26 PHP
FireFox JavaScript全局Event对象
2009/06/14 Javascript
细说浏览器特性检测(2)-通用事件检测
2010/11/05 Javascript
深入分析js中的constructor和prototype
2012/04/07 Javascript
js、css、img等浏览器缓存问题的2种解决方案
2013/10/23 Javascript
jQuery文件上传插件Uploadify使用指南
2014/06/05 Javascript
jQuery的one()方法用法实例
2015/01/19 Javascript
js获取隐藏元素宽高的实现方法
2016/05/19 Javascript
JavaScript实现url参数转成json形式
2016/09/25 Javascript
Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容
2017/06/17 Javascript
微信小程序 共用变量值的实现
2017/07/12 Javascript
ztree实现左边动态生成树右边为内容详情功能
2017/11/03 Javascript
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
2018/12/06 NodeJs
vue-cli系列之vue-cli-service整体架构浅析
2019/01/14 Javascript
JavaScript设计模式之命令模式实例分析
2019/01/16 Javascript
解决layer弹出层msg的文字不显示的问题
2019/09/11 Javascript
使用React-Router实现前端路由鉴权的示例代码
2020/07/26 Javascript
python获取本机mac地址和ip地址的方法
2015/04/29 Python
numpy.linspace 生成等差数组的方法
2018/07/02 Python
Scrapy框架使用的基本知识
2018/10/21 Python
python广度优先搜索得到两点间最短路径
2019/01/17 Python
python对文件目录的操作方法实例总结
2019/06/24 Python
python输出决策树图形的例子
2019/08/09 Python
Django实现auth模块下的登录注册与注销功能
2019/10/10 Python
python继承threading.Thread实现有返回值的子类实例
2020/05/02 Python
使用TensorBoard进行超参数优化的实现
2020/07/06 Python
详解Python中的Lock和Rlock
2021/01/26 Python
仿CSDN Blog返回页面顶部功能实现原理及代码
2013/06/30 HTML / CSS
党性观念心得体会
2014/09/03 职场文书
2014年大堂经理工作总结
2014/11/21 职场文书
婚礼嘉宾致辞
2015/07/28 职场文书
fastdfs+nginx集群搭建的实现
2021/03/31 Servers
MySql如何将查询的出来的字段进行转换
2022/06/14 MySQL