Zend_Navigation_Page_Mvc
MVC Seiten werden definiert indem MVC Parameter
verwendet werden wie von der Zend_Controller Komponent bekannt. Eine
MVC Seite wird intern in der getHref() Methode
Zend_Controller_Action_Helper_Url verwenden um hrefs zu erstellen,
und die isActive() Methode wird die Parameter von
Zend_Controller_Request_Abstract mit den Seiten Parametern verknüpfen
um zu erkennen ob die Seite aktiv ist.
MVC Seiten Optionen
Schlüssel
Typ
Standardwert
Beschreibung
action
String
NULL
Name der Aktion die verwendet wird wenn eine href zur Seite erstellt wird.
controller
String
NULL
Name des Controllers der verwendet wird wenn eine href zur Seite erstellt
wird.
module
String
NULL
Name des Moduls das verwendet wird wenn eine href zur Seite erstellt wird.
params
Array
array()
Benutzer Parameter die verwendet werden wenn eine href zur Seite erstellt
wird.
route
String
NULL
Name der Route die verwendet wird wenn eine href zur Seite erstellt wird.
reset_params
bool
TRUE
Ob Benutzer Parameter zurückgesetzt werden sollen wenn eine href zur Seite
erstellt wird.
Die drei Beispiele anbei nehmen ein Standard MVC Setup an mit der
default Route an.
Die zurückgegebene URI ist relativ zur baseUrl in
Zend_Controller_Front. Im Beispiel ist die baseUrl der
Einfachheit halber '/'.
getHref() erstellt die Seiten URI
Dieses Beispiel zeigt das MVC Seiten intern
Zend_Controller_Action_Helper_Url verwenden um
URIs zu erstellen wenn $page->getHref() aufgerufen wird.
'index',
'controller' => 'index'
));
// getHref() gibt /blog/post/view zurück
$page = new Zend_Navigation_Page_Mvc(array(
'action' => 'view',
'controller' => 'post',
'module' => 'blog'
));
// getHref() gibt /blog/post/view/id/1337 zurück
$page = new Zend_Navigation_Page_Mvc(array(
'action' => 'view',
'controller' => 'post',
'module' => 'blog',
'params' => array('id' => 1337)
));
]]>
isActive() erkennt ob eine Seite aktiv ist
Dieses Beispiel zeigt das MVC Seiten erkennen ob sie aktiv sind indem
die Parameter verwendet werden die im Anfrage Objekt gefunden werden.
'index',
'controller' => 'index'
));
$page2 = new Zend_Navigation_Page_Mvc(array(
'action' => 'bar',
'controller' => 'index'
));
$page1->isActive(); // returns true
$page2->isActive(); // returns false
/*
* Ausgeführte Anfrage:
* - module: blog
* - controller: post
* - action: view
* - id: 1337
*/
$page = new Zend_Navigation_Page_Mvc(array(
'action' => 'view',
'controller' => 'post',
'module' => 'blog'
));
// Gibt true zurück, weil die Anfrage die gleichen Module, Controller
// und Aktion hat
$page->isActive();
/*
* Ausgefürte Anfrage:
* - module: blog
* - controller: post
* - action: view
*/
$page = new Zend_Navigation_Page_Mvc(array(
'action' => 'view',
'controller' => 'post',
'module' => 'blog',
'params' => array('id' => null)
));
// Gibt false zurück weil die Seite den id Parameter in der
// Anfrage gesetzt haben muß
$page->isActive(); // gibt false zurück
]]>
Routen verwenden
Routen können mit MVC Seite verwendet werden. Wenn eine Seite eine
Route hat, wird diese Route in getHref() verwendet um die
URL für die Seite zu erstellen.
Beachte, das wenn die route Eigenschaft in einer Seite verwendet
wird, man auch die Standard Parameter spezifizieren sollte die diese Route
definieren (module, controller, action, usw.), andernfalls ist die
isActive() Methode nicht dazu in der Lage zu erkennen
ob die Seite aktiv ist oder nicht. Der Grund hierfür ist, das es aktuell keinen
Weg gibt die Standardparameter von einem
Zend_Controller_Router_Route_Interface Objekt zu
erhalten, oder die aktuelle Route von einem
Zend_Controller_Router_Interface Objekt.
getRouter()->addRoute(
'article_view', // route name
new Zend_Controller_Router_Route(
'a/:id',
array(
'module' => 'news',
'controller' => 'article',
'action' => 'view',
'id' => null
)
)
);
// Eine Seite wird mit der 'route' Option erstellt
$page = new Zend_Navigation_Page_Mvc(array(
'label' => 'A news article',
'route' => 'article_view',
'module' => 'news', // wird für isActive() benötigt, siehe oben
'controller' => 'article', // wird für isActive() benötigt, siehe oben
'action' => 'view', // wird für isActive() benötigt, siehe oben
'params' => array('id' => 42)
));
// Gibt /a/42 zurück
$page->getHref();
]]>