2012-12-26 50 views
1

我正嘗試在我的應用中使用特定操作名稱的渲染。 其實,這裏有我的病情,我AppController中設置::後過濾器()cakephp render + afterfilter變量未設置

if($this->action == 'parameter') { 
     $this->render('/Elements/parameter'); 
    } 
    else if($this->action == 'datagrid') { 
     $this->render('/Elements/datagrid'); 
    } 

而且在我的控制器/samples/parameter

  $this->set('model', Inflector::singularize(Inflector::camelize($this->name))); 
     $this->set('controller', $this->name); 
     if($parameter_id) { 
      $this->set('mode', $mode); 
      $this->set('parameter', $this->Sample->find('first', array('conditions' => array('Sample.id' => $parameter_id)))); 
     } else { 
      $this->set('mode', 'add'); 
      $this->set('parameter', array()); 
     } 

我知道,我必須使變量的定義之後,讓我用afterFilter我不明白或錯過的東西?

的相關信息:Samples Controller設置的功能

public function afterFilter(){ 
     parent::afterFilter(); 
    } 

謝謝大家!

回答

2

afterFilter()回調被稱爲渲染過程完成,所以調用render()它是做錯了。

如果您想要更改要呈現的視圖,請在beforeRender()中這樣做。所以做一些像

if ($this->action == 'parameter') { 
    $this->view = '/Elements/parameter'; 
} elseif ($this->action == 'datagrid') { 
    $this->view = '/Elements/datagrid'; 
} 
+0

Aaaaah!好的,謝謝你的解釋!現在它工作正常。 – user1928845