簡體   English   中英

Zend布局 - 如何選擇菜單項?

[英]Zend layout - how to make a menu item selected?

我有這個名為menuAdmin的布局文件。 我希望,每當給定的控制器和給定的動作處於活動狀態時,都要顯示具有特定類的“li”元素。

所以,我在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布局都是從主布局文件“layouts / main.php”調用的,我們有: <?php echo $this->render("menuadmin.php"); ?> <?php echo $this->render("menuadmin.php"); ?>

再次感謝

根據menuAdmin.php不同,您可以通過多種方式獲取控制器和操作。

如果您的文件是控制器,您可以執行以下操作之一,它們都會執行相同的操作

 $controller = $this->getRequest()->controller;
 $controller = $this->getRequest()->getParam("controller");
 $controller = $this->getRequest()->getControllerName();

理想情況下,你應該使用Zend_Navigation來做到這一點。

您應該使用Zend_Navigation,因為這是一個內置功能。

編輯:回答有關空“控制器”和“操作”值的問題; 除非你在控制器級別(幫助器,插件等)將這些設置為控制器或其他東西的視圖參數,否則它們將是空的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM