openPNE常用方法分享
方法 分享 常用
2023-06-13 09:14:31 时间
<?phpinclude_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"键名也是固定键值对应的数组则是罗列显示的内容列表
<?phpslot("pager");?>设定一个slot段落
<?phpecho"asdfasgsadfasdfaaaaaaaaaaaaaaaaaaaaaa"?>
<?phpend_slot()?>
<?phpinclude_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
publicfunctionexecuteEdit(sfWebRequest$request){
$object=$this->getRoute()->getObject();
//如果不是作者屏幕上显示404
$this->forward404Unless($this->getUser()->getMemberId()==$object->getMemberId());//$object->getMemberId()为传递过来的id值对应的那条记录的member_id字段值
$this->form=newVoteQuestionForm($object);
//访问此动作路径http://localhost/openpne/web/vote/edit/1
}
?>
<?phpop_include_pager_navigation($pager,"@tasks_list?page=%d");?>用于分页时前后翻页的超链接
$pager来自动作里的$this->pager=Doctrine::getTable("VoteQuestion")->getListPager($request->getParameter("page"));
PluginVoteQuestionTable类getListPager()方法里的内容↓
<?php
classPluginVoteQuestionTableextendsDoctrine_Table
{
publicfunctiongetListPager($page=1,$size=20)
{
$query=$this->createQuery()->orderBy("updated_atDESC");
$pager=newsfDoctrinePager("VoteQuestion",$size);//创建一个某表的分页对象,并传一个每页显示多少记录值
$pager->setQuery($query);//传一个查询语句对象
$pager->setPage($page);//设返回显示的页数
$pager->init();
return$pager;
}
}
?>
对应前台页面对分页结果集的沥遍
<?phpforeach($pager->getResults()as$item)://利用openPNE分页机制获取指定分页结果集并沥遍每一条记录?>
<dl>
<dt><?phpechoop_format_date($item->getUpdatedAt(),"f")//"f"代表一种显示格式?></dt><!--op_format_date()方法只是把2011-11-10各种中的‘-"换成汉字年月日-->
<dd><?phpecholink_to(sprintf("%s(%d)",$item->getTitle(),count($item->getVoteAnswers())),"@vote_show?id=".$item->getId())?></dd><!--$item->getTitle()获取该条记录指定字段title值-->
</dl>
<?phpendforeach;?>
<?phpecholink_to("sdsfg","@vote_show?id=".$item->getId())?>相当于<ahref="vote/show?id=...">sdsfg</a>
表名是驼峰模式在数据库里以下划线表示,字段名也是如此
链接的
就算不用方法也可以直接在action="此可直接写web/后的====模块名/动作名====或路由中设定好的web后的路径"
动作里的
$this->tasksObject=$this->getRoute()->getObject();
$this->getRoute()->getObject();//获取传过来的id参数值对应的表中的那条信息对象可通过get+字段名()获取字段值,如在页面中$tasksObject-getId();
至于如何确定获取的是哪个表则是通过路由类设置该动作路由时确定的,如下例确定的是vote_question表
例
<?php
classopVotePluginFrontendRouteCollectionextendssfRouteCollection
{
publicfunction__construct(array$options)
{
parent::__construct($options);
$this->routes=array(
"vote_edit"=>newsfDoctrineRoute(
"/vote/edit/:id",
array("module"=>"vote","action"=>"edit"),
array("id"=>"\d+","sf_method"=>array("get")),
array("model"=>"VoteQuestion","type"=>"object")
),
);
}
}
?>
相关文章
- 利用其它widthStep方法把interest_img的所有像素值增加1[通俗易懂]
- ANT1.7下载以及配置方法「建议收藏」
- 【说站】python系统内置方法如何获取
- (数据分享)江苏降水量数据的获取途径及方法:2000年1月-2010年12月小时级数据
- 使用git提交代码时发生冲突的解决方法
- Redis实现唯一计数的3种方法分享
- Linux快速配置网络的简单方法(linux自动配置网络)
- MySQL 中查询字段名称的方法(mysql取字段名称)
- Linux下文件删除方法(删除文件linuxc)
- Linux下关闭套接字的方法(linux关闭套接字)
- Linux下改变目录权限的方法(linux 更改目录权限)
- Linux查看触发文件:一种简单的方法(linux查看动态文件)
- 让Redis命令行更整洁的清洁方法(清理redis命令行)
- Oracle给字段值添加空格的方法(oracle中给值加空格)
- MYSQL表间联动删除的实现方法(MYSQL不同表删除)
- MySQL配置中没有ini文件的解决方法(mysql 下没有ini)
- MySQL服务无法启动怎么办解决方法分享(mysql 不能开启服务)
- php遍历数组的方法分享
- PHP中数组的三种排序方法分享
- php中的一些数组排序方法分享
- C#泛型的简单理解(安全、集合、方法、约束、继承)分享
- codeigniter使用技巧批量插入数据实例方法分享
- jquery使用append(content)方法注意事项分享
- 在linux中导入sql文件的方法分享(使用命令行转移mysql数据库)
- php类声明和php类使用方法示例分享