openPNE常用方法分享
前端之家收集整理的这篇文章主要介绍了
openPNE常用方法分享,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
<div class="codetitle"><a style="CURSOR: pointer" data="93256" class="copybut" id="copybut93256" onclick="doCopy('code93256')"> 代码如下:
<div class="codebody" id="code93256">
<?php include_partial('sidemenu',array('form'=>'asdfgasgsad'));?>这句话意思是包含'_sidemenu.
PHP'并往其
页面传一系列参数,'_sidemenu.
PHP'页即可直接使用$form变量中的值
<?
PHP op
includeBox('vote_question
createBox','
asdfasdf
',array('title'=>'创建问题','moreInfo'=>array('创建问题',link_to('创建问题2','@my_index'))));
?>
<?
PHP op
includeBox('vote_question
createBox',get_slot('pager'),'@my_index'))));
?>
'vote_question
createBox'只是一个
标记,'
asdfasdf
'或 get_slot('pager')则是要
输出到
页面上
标题下的信息(这个
方法里要包含slot只能用get_slot()不能用include_slot(),
而在
页面中要包含slot则必须使用include_slot())
第三个数组参数中的键值
名称title是固定的,是该段'vote_question
createBox'
显示的
标题,后面的'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->forward
404Unless($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
分页机制
获取指定
分页结果集并沥遍每一条记录?>
- <?php echo op_format_date($item->getUpdatedAt(),'f') //'f'代表一种显示格式?>
- <?php echo link_to(sprintf("%s(%d)",$item->getTitle(),count($item->getVoteAnswers())),'@vote_show?id='.$item->getId()) ?>
<?php endforeach; ?> <?php echo link_to('sdsfg','@vote_show?id='.$item->getId()) ?>相当于
sdsfg 表名是驼峰模式在
数据库里以下划线表示,字段名也是如此
链接的
就算不用
方法也可以直接在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')
),
);
}
}
?>