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 相关文章推荐
vBulletin HACK----关于排版的两个HACK
Oct 09 PHP
PHP求最大子序列和的算法实现
Jun 24 PHP
PHP和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍
Jul 03 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
Jun 12 PHP
从零开始学YII2框架(一)通过Composer安装Yii2框架
Aug 20 PHP
php为字符串前后添加指定数量字符的方法
May 04 PHP
PHP中Http协议post请求参数
Nov 02 PHP
PHP面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)
Dec 02 PHP
详解PHP中的序列化、反序列化操作
Mar 21 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
Sep 21 PHP
Laravel中获取路由参数Route Parameters的五种方法示例
Sep 29 PHP
Laravel框架FormRequest中重写错误处理的方法
Feb 18 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页面间参数传递的四种方法详解
2013/06/09 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
2015/12/10 PHP
php设计模式之单例模式代码
2016/06/11 PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
2017/04/19 PHP
JavaScript 异步调用框架 (Part 1 - 问题 &amp; 场景)
2009/08/03 Javascript
跨浏览器开发经验总结(四) 怎么写入剪贴板
2010/05/13 Javascript
使用js 设置url参数
2013/07/08 Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
2014/04/12 Javascript
IE8中使用javascript动态加载CSS的解决方法
2014/06/17 Javascript
javascript中Number对象的toString()方法分析
2014/12/20 Javascript
JavaScript中数组成员的添加、删除介绍
2014/12/30 Javascript
jQuery UI设置固定日期选择特效代码分享
2015/08/27 Javascript
JS 实现倒计时数字时钟效果【附实例代码】
2016/03/30 Javascript
Vue.js实例方法之生命周期详解
2017/07/03 Javascript
vue 自定义指令自动获取文本框焦点的方法
2018/08/25 Javascript
微信小程序select下拉框实现效果
2019/05/15 Javascript
Vue动态创建注册component的实例代码
2019/06/14 Javascript
vue 解决数组赋值无法渲染在页面的问题
2019/10/28 Javascript
js禁止查看源文件屏蔽Ctrl+u/s、F12、右键等兼容IE火狐chrome
2020/10/01 Javascript
python简单猜数游戏实例
2015/07/09 Python
Python编程实现蚁群算法详解
2017/11/13 Python
python3+PyQt5泛型委托详解
2018/04/24 Python
Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】
2019/04/26 Python
Tensorflow 实现分批量读取数据
2020/01/04 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
2020/07/02 Python
Python字符串函数strip()原理及用法详解
2020/07/23 Python
html5 的a标签 Href 拨电话的写法
2013/11/04 HTML / CSS
Pure Collection美国官网:来自英国羊绒专家的奢华羊绒
2017/11/19 全球购物
Nasty Gal英国:美国女性服饰销售网站
2021/03/02 全球购物
美国知名眼镜网站:Target Optical
2020/04/04 全球购物
薇姿法国官网:Vichy法国
2021/01/28 全球购物
出生公证委托书
2014/04/03 职场文书
元旦联欢会策划方案
2014/06/11 职场文书
2014向国旗敬礼网上签名活动总结
2014/09/27 职场文书
就业意向书范本
2015/05/11 职场文书
反邪教教育心得体会
2016/01/15 职场文书