Mit Zend_Controller_Router_Route zu schaffen freundliche URLs für die Aktionen in Indexcontroller
-
18-09-2019 - |
Frage
In meinem Indexcontroller, ich habe zur Zeit index (Homepage), und LogoutAction loginaction. Ich versuche „/ index /“ aus der URL zu entfernen, anstatt domain.com/index/login zu bekommen domain.com/login.
Was ist der sauberste Weg, um dies zu erreichen? Gibt es eine RegEx wir verwenden können? Ich glaube nicht, jemals will / index / in der URL.
Meine aktuelle Lösung, die ich glauben kann verbessert werden, ist unten. Auch was bedeutet den ersten Parameter in addRoute () tun?
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initViewHelpers()
{
$front = Zend_Controller_Front::getInstance();
$router = $front->getRouter();
$router->addRoute('login',
new Zend_Controller_Router_Route('login/*', array(
'controller' => 'index',
'action' => 'login'
))
);
$router->addRoute('logout',
new Zend_Controller_Router_Route('logout/*', array(
'controller' => 'index',
'action' => 'logout'
))
);
}
}
Lösung
Es gibt nichts zu impove, müssen Sie Route erstellen für jede Aktion. Dies ermöglicht es Ihnen, ohne Änderung des Code Router Standards (Modul / controller / action) zu ändern.
Der erste Parameter ist der Routennamen, die Sie mit URL verwenden () Helfer in Ihrer Ansichten:
<a href="<?php echo $this->url(array(), 'login', true); ?>">Login</a>
Update. Sie können eine solche Route verwenden, wenn Sie nur eine Route wollen, ohne "Index" in url:
$router->addRoute('default',
new Zend_Controller_Router_Route(':action/*', array(
'controller' => 'index',
))
);