Domanda

Nel mio IndexController, ho attualmente indexAction (home page), loginAction e LogoutAction. Sto cercando di rimuovere "/ index /" dal URL per ottenere domain.com/login invece di domain.com/index/login.

Qual è il modo più pulito per raggiungere questo obiettivo? C'è una RegEx possiamo usare? Io non voglio mai / index / nella URL.

La mia soluzione attuale, che a mio avviso può essere migliorato, è al di sotto. Inoltre, che cosa fa il primo parametro in addroute () fare?

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'
      ))
    );
  }
}
È stato utile?

Soluzione

Non c'è niente da impove, è necessario creare rotta per ogni azione. Questo vi permetterà di cambiare le impostazioni predefinite di percorso (modulo / regolatore / azione) senza modificare il codice.

Il primo parametro è il nome della rotta, che è necessario utilizzare con url () helper in vostro punto di vista:

<a href="<?php echo $this->url(array(), 'login', true); ?>">Login</a>

Aggiornamento. È possibile utilizzare tale percorso, se si vuole un solo percorso senza "indice" in url:

$router->addRoute('default',
  new Zend_Controller_Router_Route(':action/*', array(
    'controller' => 'index',
  ))
);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top