En utilisant Zend_Controller_Router_Route pour créer des URL conviviales pour les actions en IndexController
-
18-09-2019 - |
Question
Dans mon IndexController, j'ai actuellement indexAction (page d'accueil), et loginAction LogoutAction. Je suis en train de supprimer « / index / » de l'URL pour obtenir domain.com/login au lieu de domain.com/index/login.
Quelle est la plus propre moyen d'y parvenir? Y at-il un RegEx que nous pouvons utiliser? Je ne veux plus jamais / index / dans l'URL.
Ma solution actuelle, que je crois qu'elles peuvent être améliorées, est ci-dessous. En outre, qu'est-ce que le premier paramètre dans addRoute () faire?
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'
))
);
}
}
La solution
Il n'y a rien à impove, vous devez créer la route pour chaque action. Cela vous permettra de modifier les valeurs par défaut de route (module / contrôleur / action) sans modifier votre code.
Le premier paramètre est le nom de la route, que vous devez utiliser avec aide url () dans vos vues:
<a href="<?php echo $this->url(array(), 'login', true); ?>">Login</a>
Mise à jour. Vous pouvez utiliser cette route, si vous voulez seulement une route sans « index » dans l'URL:
$router->addRoute('default',
new Zend_Controller_Router_Route(':action/*', array(
'controller' => 'index',
))
);