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'
      ))
    );
  }
}
War es hilfreich?

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',
  ))
);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top