Zend Framework Routing: Erweiterung .html
-
19-08-2019 - |
Frage
Ich weiß, ich habe gesehen, bevor getan, aber ich kann die Informationen nicht überall finden. Ich muß mit .html Erweiterungen im Zend Framework auf dem Weg zu können.
d. /controller/action.html sollte Route an der entsprechenden Controller / Aktion.
Wir haben eine Idee, die Erweiterung .html mit unserer .htaccess-Datei wegzuwerfen, aber ich denke, die Strecke Config zu ändern wäre die bessere Lösung sein.
Jede Beratung ist willkommen.
Lösung
Eine schnelle Suche auf Google ergab die folgenden Anleitungen:
Erweiterung der Zend Framework-Route und Router für individuelle Routing
Routing und komplexer URLs in Zend Framework
Andere Tipps
Dies ist das Plugin ich in mehreren Anwendungen verwendet habe:
/**
* Removes .html extension from URI, if present.
*/
class Application_Plugin_RemoveHtmlExtension extends Zend_Controller_Plugin_Abstract
{
public function routeStartup(Zend_Controller_Request_Abstract $request)
{
// remove ".html" from the end of the URI
$url = preg_replace('#\.html$#i', '', $request->getRequestUri());
$request->setRequestUri($url);
}
}
Ich habe versucht, das gleiche für eine alte Anwendung zu tun. Hier ist, was für mich gearbeitet.
$front = Zend_Controller_Front::getInstance();
$router = $front->getRouter();
$router->addRoute('routeHTML', new Zend_Controller_Router_Route_Regex( '([a-z-]+)/([a-z-]+)/([a-z-]+)\.html', array(),
array(1 => 'module', 2 => 'controller', '3' => 'action') ,
'%s/%s/%s.html')
);
Die Standardroute (ohne Module) ist:
:controller/:action
Welche können Sie entfernen, indem Sie:
$router->removeDefaultRoutes();
Dann fügen Sie Ihre Version:
:controller/:action.html