cakephp菜鳥筆記4

簡單講完model之後便是controller的使用,如果在/app/下創建了app_controller的話,所有創建的controller都會繼承你所創建的controller,一般controller的名字都是名詞複數_controller.php,在代碼裏面便是名詞複數Controller的雙駝峯寫法。如果controller由bake生成的話,便會生成4個方法,查刪改插都有。
controller類成員有:$name(名詞複數,說明這個controller使用哪個model,自動使用名詞單數那個model)
$uses如果這個屬性顯式使用了後,還想使用這個controller默認使用的model就必須要顯式聲明。
$components 這個屬性使用其他組件,方便使用。
$this->pageTitle,在layout中使用這個可以爲不同controller調用的view使用title變量。
<?php //echo $title_for_layout; 
//$this->pageTitle="title";
?>
 

$this->layout,一般都默認使用default.ctp,如果不從cake/lib裏面複製到app/view/layout目錄下的話是沒有 default.ctp這個文件,複製後系統自動會調用app/view/layout/default.ctp。
class ProductsController extends AppController {

 var $name = 'Products';
 var $uses = array('Product','Taxonomy');
 function beforeFilter() {
  $this->Auth->allow('view');
  //  parent::beforeFilter();
 }
 function index() {
  $this->Product->recursive = 0;
  $this->set('products', $this->paginate());
 }

說完這些簡單的屬性,controller每個方法都會調用與其名字相同的view,如果是viewCompany方法=》view_company.ctp
add、edit的時候,頁面會產生$this->data,會自動與頁面的form關聯,要想更改form提交的數據,使用debug方法傳入$this->data參數進行詳細瞭解使用。
其他模型數據保存與插入bake生成的代碼都有示例,可以自行參考瞭解,也可以只保存某個model裏面的其中一個字段field,方法爲saveField()。
保存後可以使用$this->Session->setFlash()方法來從頁面提示處理信息,字符串一般使用__()(ps:兩個下劃線的方法,是國際化方法來的)。
$this->redirect(array('action' => 'index'))可以跳轉到某個方法,如果在該方法是在同一個controller裏面,可以省略controller。$this->redirect($this->referer());//自動跳轉到回引用頁面,寫登陸方法的使用這個非常好。
controller方法裏面的參數,一般從router.php裏面設置,如果默認設置,就自動從方法gj/users(控制器)/view(方法)/arg1/arg2後的按順序讀取arg1、arg2進入方法的參數,最好每個參數在參數列表裏都賦值null,以免報錯。
beforeFilter這個方法繼承app_controller,如果沒有顯式定義,就不用了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章