2014-05-20 24 views
1

App Controller的代碼用於導航欄的功能。cakephp:與其他控制器的AppController衝突

AppController的

public function beforeFilter() { 
     parent::beforeFilter(); 
     $this->RememberMe->restoreLoginFromCookie(); 
     $this->set('server_root', Router::url('/')); 

     $this->loadModel('Recipe'); 
    $this->set('recipes', $this->Recipe->find('all')); 

一切正常,每個頁面顯示的導航欄和所有頁面功能正常 直到我添加了一個下拉菜單選擇需要與「配方」值填充每一個導航欄。

KitchenController

這是我用來填充下拉選擇

$this->set('recipes', $this->Recipe->find('all',array('fields'=>array('Recipe.description')))); 

它填補了下拉列表中的代碼,雖然不完全是我想要得到,但近一點的值,但它也影響導航欄導致一些錯誤,如未定義的變量,這是以前沒有。它以某種方式影響也使用模型「配方」的導航欄。

問題1:我如何可以隔離下拉選擇,這樣就不會影響導航欄控制器問題 問題2:我怎樣才能調用特定領域中的數組,因爲目前這個代碼

$this->set('recipes', $this->Recipe->find('all',array('fields'=>array('Recipe.description')))); 

返回id,日期和描述,我只需要描述。

任何幫助表示讚賞感謝

+1

有沒有需要'server_root'變量 - 你可以隨時隨地訪問路由器。在beforeFilter中加載模型並設置變量是一個_bad的想法;如果所有頁面都需要將它放入之前的_Render_函數中,那麼即使請求被重定向或者沒有視圖,也不會找到食譜。 – AD7six

回答

3

似乎要設置相同的視圖變量名「食譜」當你想使用相同的變量有兩個不同的輸出是問題。您必須更改變量名,如:

nav_recipes或配方

或東西是精確到你的應用程序上下文