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