我正在使用導航建立菜單。在我的配置文件,我使用URI(我無法得到路線,控制器,動作正常工作)zf2導航isActive不與uri一起工作
'navigation' => array(
'default' => array(
array(
'label' => 'Home',
// not sure why I can't use route, controller, action...
// for now, i'm using uri
'uri' => '/',
),
array(
'label' => 'About us',
'uri' => '/application/intro',
), ...
應用模塊的路徑是默認的,建立這樣
'application' => array(
'type' => 'Literal',
'options' => array(
'route' => '/application',
'defaults' => array(
'__NAMESPACE__' => 'Application\Controller',
'controller' => 'Index',
'action' => 'index',
),
),
'may_terminate' => true,
'child_routes' => array(
'default' => array(
'type' => 'Segment',
'options' => array(
'route' => '/[:controller[/:action]]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array(
),
),
),
),
),
現在
,isActive是不是在我看來,工作(部分)調用
<?php foreach ($this->container as $page): ?>
<li <?php echo $page->isActive()? 'class="' . $activeClass . '"' : '' ?>>
...
當我試圖手動做到這一點的時候,我試圖用$這個 - 比較> URL。我意識到$ this-> url只返回路由的路徑。意思是,在我的例子中,當我在/ application/intro時,$ this-> url將只返回/ application /,並且不會返回「intro」控制器。
我的問題是,我該如何才能返回與控制器,行動等網址?或者我能做些什麼來確保isActive可以正常工作。
在此先感謝!
賈斯汀
感謝您的注意魯本!真的很感激它。我會嘗試使用$ this-> url()來檢查和setActive(儘管我仍然有問題,因爲$ this-> url()不會返回帶有控制器(/ application /而不是/ application/intro)的url )除此之外,我在使用路由時遇到的問題是控制器和動作沒有被構建到href中。當設置路由到應用程序和控制器到前奏時,getHref()將只返回/ application(當我希望我得到的結果是,我忽略了一些愚蠢的東西,我忽略了一些提示? – juworld
嗯,讓我弄清楚這個,你正在使用'application'路由,所以如果這個路由被定義爲你的OP,它總是返回/應用程序,因爲它是一個路由屬性設置爲/ application的文字路由。你可能想要的是將導航項指向應用程序路由的子路由,那麼如果你嘗試將路由設置爲應用程序/默認代替? – Ruben
謝謝魯本!這絕對是固定它!花了我幾個小時!歡呼魯本! – juworld