2014-05-22 83 views
1

我是cakephp中的新人。我想爲我的網站建立一個菜單系統。無論如何要在整個站點顯示控制器輸出視圖?我的控制器是這樣的:在cakephp的所有頁面顯示控制器的輸出

<?php 
App::uses('AppController', 'Controller'); 

class MenusController extends AppController { 

// I want to show all avilable controller in my application 
public $components = array('ControllerList'); 

public function index() {  
     $this->set('menus', $this->ControllerList->getList()); 
    }  
} 

而我的觀點:

foreach ($dataForView['menus'] as $key => $val) { 

     if ($val['name'] == 'Menus') { 
      unset($val['name']); 
      unset($val['actions']); 
      } 
     else { 
      echo '<li class="dropdown">'; 
      echo "<a href='#' class='dropdown-toggle' data-toggle='dropdown'>".$val['name'].'<b class="caret"></b></a>' ; 

      echo '<ul class="dropdown-menu">'; 

     foreach ($val['actions'] as $key => $value) { 
      echo '<li><a href="#">'. $value .'</a></li>'; 
      if ($value == 'add') { 
      break; 
      } 
     } 
    echo "</li></ul>"; 
    } 

    } 

回答

2

一個你的選項是讓ControllerList設置menus財產的AppControllerbeforeFilter方法AppController和 一個組成部分。

例子:

class AppController extends Controller { 

    var $components = array(
     'ControllerList'  
    ); 

    public function beforeFilter() { 
     $this->set('menus', $this->ControllerList->getList()); 
    } 
} 

CakePHP Controller Callbacks docs here

至於你應該創建菜單的元素,在你的佈局,一旦包括它的觀點。

例子:

app/View/Element/main_menu.ctp: 

foreach ($dataForView['menus'] as $key => $val) { 
... // your code here 
} 

你這包含在佈局(應用程序/瀏覽/設計/例如default.thtml中)

<?php echo $this->element('main_menu'); ?> 

CakePHP Element docs here

+0

感謝您的答覆..我會嘗試並讓你知道。還有一個建議..我如何用我的模型名稱或控制器名稱更改$ dataForView? – jibon57

+0

非常感謝你..它工作100%:)。但是,請你描述爲什麼數據要在$ dataForView中發送? – jibon57

+0

對不起,我不明白你到底想知道什麼?! –

相關問題