Route Anfragen für sitemap.xml, um benutzerdefinierte controller / action
Um den direkten Anfragen / sitemap.xml eine benutzerdefinierte Controller und die Aktion in Ihrem Zend Framework -Anwendung fügen Sie einfach folgendes in Ihre application.ini oder alternative Konfigurationsdatei (zB ich navigation.ini):
resources.router.routes.sitemap.route = "sitemap.xml" resources.router.routes.sitemap.defaults.controller = Index resources.router.routes.sitemap.defaults.action = sitemap
Beispiel-Code für die Ausgabe kann durch die Schaffung einer Aktion in den entsprechenden Controller zu sehen (zB meine sitemap liegt in der Index-Controller, Übersicht Aktion):
< php Klasse IndexController erstreckt Zend_Controller_Action { / ** * Renders eine Sitemap auf Zend_Navigation basiertes Setup * / öffentliche Funktion sitemapAction () { echo $ this-> view-> navigation () -> Sitemap (); $ This-> view-> layout () -> disableLayout (); $ This-> _helper-> viewRenderer-> setNoRender (true); } }
Sitemaps können schnell und einfach mit Hilfe erzeugt werden Zend_Navigation , ein großer Kurzanleitung (und in der Regel sehr nützlich für Zend Framework Tutorials) ist Zend Casts - Dynamisches Erstellen eines Menü eine Sitemap und Paniermehl .


















































Eine Sache habe ich vergessen zu erwähnen ist, dass Sie auch brauchen, um Ihre Standard-Route für Ihre XML-Sitemap angeben, da sonst alle URLs zu / sitemap.xml Punkt, wenn Sie Zend_Navigation_Page_Mvc (wenn Sie liefert URIs sind da nicht ein Problem sein Einsatz ).
Zum Beispiel mein neuestes Projekt verwendet die folgenden Routing:
; ==============================
; Resource Routing
; ==============================
resources.router.routes.www.type = "Zend_Controller_Router_Route_Hostname"
resources.router.routes.www.route = ": module.example.com"
resources.router.routes.www.defaults.module = "default"
resources.router.routes.www.chains.index.type = "Zend_Controller_Router_Route"
resources.router.routes.www.chains.index.route = ": controller /: action / *"
resources.router.routes.www.chains.index.defaults.controller = "index"
resources.router.routes.www.chains.index.defaults.action = "index"
resources.router.routes.sitemap.type = "Zend_Controller_Router_Route"
resources.router.routes.sitemap.route = "sitemap.xml"
resources.router.routes.sitemap.defaults.controller = Index
resources.router.routes.sitemap.defaults.action = sitemap
Daher in meinem navigation.xml (oder was auch immer config Sie sich entscheiden), müssen Sie angeben, das Routing zu verwenden, zB
default.pro.pages.aboutUs.label = "Firmenprofil"
default.pro.pages.aboutUs.module = "www"
default.pro.pages.aboutUs.controller = "about-us"
default.pro.pages.aboutUs.action = "index"
default.pro.pages.aboutUs.resource = "www_pages"
default.pro.pages.aboutUs.route = "www-Index"
[...] Eine Fortsetzung zu meinem letzten Post über Zend_Navigation, Route Anfragen für sitemap.xml, um benutzerdefinierte controller / action, dieser Post ist über dymnamically Hinzufügen von Seiten zu einer Zend_Navigation Container zur Laufzeit / script [...]
Ich habe ernsthafte Probleme, kann ich nicht lösen es: (
Ich habe router.ini
resources.router.routes.sitemap.type = "Zend_Controller_Router_Route"
resources.router.routes.sitemap.route = "sitemap.xml"
resources.router.routes.sitemap.defaults.controller = Index
resources.router.routes.sitemap.defaults.action = sitemap
und bootstrap.php
geschützten Funktion _initRouter ()
{
$ FrontController = Zend_Controller_Front:: getInstance ();
$ Config = new Zend_Config_Ini (APPLICATION_PATH "/ config / router.ini '.);
$ Router = $ frontController-> getRouter ();
$ Router-> AddConfig ($ config "Router");
}
und ich diese Fehlermeldung:
Informationen zur Ausnahme:
Message: Invalid controller specified (sitemap.xml)
Request-Parameter:
array (
'Controller' => 'sitemap.xml',
'Action' => 'index',
'Modul' => 'Standard',
)
Es scheint, dass er verpasst ein paar Einträge, aktualisieren Sie Ihre Routen zu entsprechen:
resources.router.routes.sitemap.type = "Zend_Controller_Router_Route_Static"
resources.router.routes.sitemap.route = "sitemap.xml"
resources.router.routes.sitemap.controller = "index"
resources.router.routes.sitemap.action = "Sitemap"
resources.router.routes.sitemap.defaults.module = "www"
resources.router.routes.sitemap.defaults.controller = "index"
resources.router.routes.sitemap.defaults.action = "Sitemap"
resources.router.routes.sitemap.defaults.route = "www-Index"