/ / Zend_Navigation isActive non funziona - zend-framework, zend-navigation, socialengine

Zend_Navigation isActive non funziona - zend-framework, zend-navigation, socialengine

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 № 1

Se 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 ()