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的慢速日志引起的Mysql错误问题分析
May 13 PHP
Yii获取当前url和域名的方法
Jun 08 PHP
PHP编程入门的基本语法知识点总结
Jan 26 PHP
PHP 中提示undefined index如何解决(多种方法)
Mar 16 PHP
PHP简单创建压缩图的方法
Aug 24 PHP
PHP文件操作实例总结
Sep 27 PHP
Laravel实现短信注册的示例代码
May 29 PHP
PHP 7.4中使用预加载的方法详解
Jul 08 PHP
php5.6.x到php7.0.x特性小结
Aug 17 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
Oct 11 PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
Jan 23 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通过API获取手机号码归属地
2015/05/28 PHP
PHP数组去重的更快实现方式分析
2018/05/09 PHP
Javascript 构造函数 实例分析
2008/11/26 Javascript
利用JS自动打开页面上链接的实现代码
2011/09/25 Javascript
JavaScript中的原型和继承详解(图文)
2014/07/18 Javascript
IE浏览器不支持getElementsByClassName的解决方法
2014/08/27 Javascript
从数据库读取数据后将其输出成html标签的三种方法
2014/10/13 Javascript
深入探密Javascript数组方法
2015/01/08 Javascript
javascript DIV实现跟随鼠标移动
2020/03/19 Javascript
AngularJs Forms详解及简单示例
2016/09/01 Javascript
快速掌握jQuery插件开发
2017/01/19 Javascript
node.js实现复制文本到剪切板的功能
2017/01/23 Javascript
jQuery图片瀑布流的简单实现代码
2017/03/15 Javascript
mac下的nodejs环境安装的步骤
2017/05/24 NodeJs
纯javascript前端实现base64图片下载(兼容IE10+)
2018/09/14 Javascript
vue  directive定义全局和局部指令及指令简写
2018/11/20 Javascript
[02:23]完美世界全国高校联赛街访DOTA2第一期
2019/11/28 DOTA
linux系统使用python获取cpu信息脚本分享
2014/01/15 Python
如何使用七牛Python SDK写一个同步脚本及使用教程
2015/08/23 Python
Odoo中如何生成唯一不重复的序列号详解
2018/02/10 Python
Python socket连接中的粘包、精确传输问题实例分析
2020/03/24 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
2020/04/26 Python
六种酷炫Python运行进度条效果的实现代码
2020/07/17 Python
python Cartopy的基础使用详解
2020/11/01 Python
Tostadora意大利:定制T恤
2019/04/08 全球购物
幼教个人求职信范文
2013/12/02 职场文书
医学院校毕业生自荐信范文
2014/01/01 职场文书
优秀辅导员事迹材料
2014/02/16 职场文书
《燕子》教学反思
2014/02/18 职场文书
机电专业毕业生求职信
2014/07/01 职场文书
村党支部书记四风问题个人对照检查材料思想汇报
2014/10/06 职场文书
2014年公司工作总结
2014/11/22 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
2016年村干部公开承诺书(公开承诺事项)
2016/03/25 职场文书
Filebeat 采集 Nginx 日志的方法
2021/03/31 Servers
Python利器openpyxl之操作excel表格
2021/04/17 Python