Ho il codice seguente:
<ul class="navigation">
<?php foreach( $this->navigation as $item ): ?>
<li class="<?php if($item->isActive()){echo " active";}?>">
<div class="shadow"></div>
<div class="tab"><?php echo $this->htmlLink($item->getHref(), $this->translate($item->getLabel())) ?></div>
</li>
<?php endforeach; ?>
</ul>
Il $item->isActive()
funziona come previsto solo per la home page. su tutte le altre pagine la classe = "attiva" non viene visualizzata.
AGGIORNARE:
L'applicazione utilizza il percorso come il seguente:
// Routes --------------------------------------------------------------------
"routes" => array(
"home" => array(
"route" => "/",
"defaults" => array(
"module" => "core",
"controller" => "index",
"action" => "index"
)
),
"core_home" => array(
"route" => "/",
"defaults" => array(
"module" => "core",
"controller" => "index",
"action" => "index"
)
),
"confirm" => array(
"route"=>"/confirm",
"defaults" => array(
"module"=>"core",
"controller"=>"confirm",
"action"=>"confirm"
)
),
// Admin - General
"core_admin_settings" => array(
"route" => "admin/core/settings/:action/*",
"defaults" => array(
"module" => "core",
"controller" => "admin-settings",
"action" => "index"
),
"reqs" => array(
"action" => "D+",
)
),
)
i percorsi sono salvati in un file chiamato manifest.php
risposte:
1 per risposta № 1Se stai utilizzando percorsi personalizzati durante la creazione del tuo Zend_Navigation_Page_Mvc oggetti, devi impostare il modulo, il controller e l'azione in modo esplicito.
Vedere il Documentazione Zend_Navigation sotto Esempio n. 4 Uso delle rotte:
Nota: Si noti che quando si utilizza la proprietà route in apagina, dovresti anche specificare i parametri predefiniti che la rotta definisce (modulo, controllore, azione, ecc.), altrimenti il metodo isActive () non sarà in grado di determinare se la pagina è attiva.
Se non utilizzi le rotte, fornisci ulteriori informazioni sul tuo codice.
Per quanto riguarda il tuo aggiornamento:
Il tuo Zend_Navigations deve apparire come il seguente
new Zend_Navigation(array(
array(
"label" => "Home",
"module" => "core",
"controller"=> "index",
"action" => "index",
"route" => "core"
),
array(
"label" => "Admin Settings",
"module" => "core",
"controller"=> "admin-settings",
"action" => "index",
"route" => "core_admin_settings"
),
array(
"label" => "User Administration",
"module" => "core",
"controller"=> "admin-settings",
"action" => "users",
"route" => "core_admin_settings"
),
));
Quindi, il metodo isActive () dovrebbe funzionare come previsto.
0 per risposta № 2
Se non si specifica modulo, controllore e variabile di azione, non è possibile utilizzare sfortunatamente il metodo isActive ()