我有這個佈局文件叫做menuAdmin。 我希望每次給定的控制器和給定的動作處於活動狀態時,都會顯示具有特定類的「li」元素。Zend佈局 - 如何選擇一個菜單項?
所以,我有我的menuAdmin.php如下:
<li <?php echo ($this->controller == "d" && $this->action == "a") ? "class='selectedMenuItem'" : ''; ?>><a href="<?php echo $this->url(array("controller"=>"d","action"=>"a.d"))?>">Aaaa Dddd</a></li>
我什麼也沒得到這個,如果我傾倒: var_dump($this->controller);
和var_dump($this->action);
我得到NULL NULL
- 所以我相信Zend在那時不會觸發那些。
問題: 我怎麼能完成這樣的任務呢?我應該遵循這條道路嗎?如果是這樣,我的menuAdmin佈局將如何知道控制器和操作是在什麼位置?
更新: menuAdmin.php是一個佈局文件,位於Zend結構的Layouts文件夾內。 這是一個大型應用程序,並且就地結構已經是這樣了 - 使用佈局文件作爲菜單,其中這只是其中的一個。
因此$ this-> controller和$ this-> action只能在控制器內部工作,或者如果我明確地將它傳遞給視圖。不過,在這種情況下,我想在佈局上調用它。爲什麼呢?因爲通過這樣做,我可以進行一次更改,並允許將這一更改複製到使用此佈局的所有視圖中。
關於上述說明,您的答案可能會改變嗎?
更新2: 我不知道這是相關或沒有,但,這一切menuadmin佈局從主佈局文件「佈局/ main.php」打來電話,還有我們有:<?php echo $this->render("menuadmin.php"); ?>
再次感謝
爲什麼你不想使用Zend_Navigation?如果你真的必須在佈局中訪問請求對象(請參閱傑克的回答),請使用`$ request = Zend_Controller_Front :: getInstance() - > getRequest();` – Phil 2011-02-09 23:28:19