程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> openPNE常用方法分享

openPNE常用方法分享

編輯:PHP綜合
復制代碼 代碼如下:
<?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')
),
);
}
}
?>
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved