/ / Zend_Navigation isActive funktioniert nicht - zend-framework, zend-navigation, socialengine

Zend_Navigation isActive funktioniert nicht - zend-framework, zend-navigation, socialengine

Ich habe den folgenden Code:

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

Das $item->isActive() funktioniert nur für die Startseite. Auf allen anderen Seiten wird die Klasse = "active" nicht angezeigt.

AKTUALISIEREN:

Die Anwendung verwendet eine Route wie die folgende:

// 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+",
)
),
)

Die Routen sind in einer Datei namens manifest.php gespeichert

Antworten:

1 für die Antwort № 1

Wenn Sie beim Erstellen eigene benutzerdefinierte Routen verwenden Zend_Navigation_Page_Mvc Objekte müssen Sie explizit Modul, Controller und Aktion setzen.

Siehe die Zend_Navigation Dokumentation unter Beispiel # 4 Verwenden von Routen:

Hinweis: Beachten Sie, dass bei Verwendung der Eigenschaft route in aSie sollten auch die Standardparameter angeben, die die Route definiert (Modul, Controller, Aktion usw.). Andernfalls kann die isActive () -Methode nicht feststellen, ob die Seite aktiv ist.

Wenn Sie Routes nicht verwenden, geben Sie bitte weitere Informationen zu Ihrem Code an.


Zu deinem Update:

Deine Zend_Navigations muss wie folgt aussehen

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"
),
));

Dann sollte die Methode isActive () wie erwartet funktionieren.


0 für die Antwort № 2

Wenn Sie Modul, Controller und Aktionsvariable nicht angegeben haben, können Sie die Methode isActive () leider nicht verwenden