2014-05-14 53 views
2

我有一個帶有頂部導航欄的站點佈局,我需要將該類設置爲激活,具體取決於用戶在不同頁面上單擊時更改的控制器。Phalcon PHP - 在視圖中獲取控制器名稱

,則須─> index.phtml

<li class='<?php echo (isset($this->controllerName) && $this->controllerName == 'about') ? 'active' : '' ?>'><a href="/about">About Us</a></li> 
<li class='<?php echo (isset($this->controllerName) && $this->controllerName == 'services') ? 'active' : '' ?>'><a href="/services">Member Sevices</a></li> 

我希望爾康有一個視圖功能或者也可以是我可以把引導所以它的工作與了我必須記住所有頁面手動設置每個控制器中的controllerName變量。

回答

12

內部視圖訪問你的路由器的服務:

$this->router->getControllerName() 
$this->router->getActionName() 

,或者如果你正在使用伏則可以使用短針

router.getControllerName() 
router.getActionName() 

,會爲你的使用情況的工作,但如果你發現你的菜單邏輯變得太笨重了,有幾種方法可以實現你正在嘗試做的事情。

我發現最簡單的方法就是使用javascript,但如果js禁用(1%),則沒有後備功能。如果你想覆蓋100%的觀衆,你可以使用像法爾康團隊在INVO中使用元素庫的方法:https://github.com/phalcon/invo/blob/master/app/library/Elements.php

+0

謝謝,這是一個很好的答案@ david.duncan。你如何獲得元素庫的工作?我嘗試過,並沒有工作。在我的services.php中,我添加了$ di-> set('elements',function(){elements} = new Elements(); return $ elements; });在我的views/index.phtml中,我添加了{{elements.getTabs()}},但沒有顯示任何內容。 (請注意,我已經複製並編輯了elements.php的內容......我錯過了什麼? –

相關問題