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
destoon出现验证码不显示时的紧急处理方法
Aug 22 PHP
深入解析WordPress中加载模板的get_template_part函数
Jan 11 PHP
基于PHP实现商品成交时发送短信功能
May 11 PHP
PHP引用返回用法示例
May 28 PHP
php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法
Jul 12 PHP
Yii2实现让关联字段支持搜索功能的方法
Aug 10 PHP
thinkphp隐藏index.php/home并允许访问其他模块的实现方法
Oct 13 PHP
Laravel学习教程之IOC容器的介绍与用例
Aug 15 PHP
laravel-admin 实现给grid的列添加行数序号的方法
Oct 08 PHP
Laravel 5.5 实现禁用用户注册示例
Oct 24 PHP
PHP array_reverse() 函数原理及实例解析
Jul 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
Destoon模板制作简明教程
2014/06/20 PHP
php相对当前文件include其它文件的方法
2015/03/13 PHP
php查询mysql数据库并将结果保存到数组的方法
2015/03/18 PHP
PHP实现截取中文字符串不出现?号的解决方法
2016/12/29 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
2009/11/26 Javascript
JavaScript.The.Good.Parts阅读笔记(二)作用域&amp;闭包&amp;减缓全局空间污染
2010/11/16 Javascript
浏览器加载、渲染和解析过程黑箱简析
2012/11/29 Javascript
jquery的attr方法禁用表单元素禁用输入内容
2014/06/23 Javascript
Jquery弹出层插件ThickBox的使用方法
2014/12/09 Javascript
js实现拖拽效果
2015/02/12 Javascript
IE8下jQuery改变png图片透明度时出现的黑边
2015/08/30 Javascript
vue在使用ECharts时的异步更新和数据加载详解
2017/11/22 Javascript
代码详解javascript模块加载器
2018/03/04 Javascript
微信小程序异步API为Promise简化异步编程的操作方法
2018/08/14 Javascript
nodejs对项目下所有空文件夹创建gitkeep的方法
2019/08/02 NodeJs
JS实现简单省市二级联动
2019/11/27 Javascript
[01:13]这,就是刀塔
2014/07/16 DOTA
python使用新浪微博api上传图片到微博示例
2014/01/10 Python
python通过zabbix api获取主机
2018/09/17 Python
如何利用python正则表达式匹配版本信息
2020/12/09 Python
纯CSS3实现地球自转实现代码(图文教程附送源码)
2012/12/26 HTML / CSS
微软马来西亚官方网站:Microsoft马来西亚
2019/11/22 全球购物
How to spawning asynchronous work in J2EE
2016/08/29 面试题
毕业学生推荐信
2013/12/01 职场文书
运动会通讯稿300字
2014/02/02 职场文书
升学宴演讲稿
2014/09/01 职场文书
关于国庆节的演讲稿
2014/09/05 职场文书
公司员工安全协议书
2014/11/21 职场文书
入党函调证明材料
2014/12/24 职场文书
幼儿园中班个人总结
2015/02/28 职场文书
稽核岗位职责范本
2015/04/13 职场文书
中秋节主题班会
2015/08/14 职场文书
pytorch查看网络参数显存占用量等操作
2021/05/12 Python
python库Tsmoothie模块数据平滑化异常点抓取
2022/06/10 Python
win10壁纸在哪个文件夹 win10桌面背景图片文件位置分享
2022/08/05 数码科技