En utilisant Zend_Controller_Router_Route pour créer des URL conviviales pour les actions en IndexController

StackOverflow https://stackoverflow.com/questions/2410964

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'
      ))
    );
  }
}
Était-ce utile?

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',
  ))
);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top