Pregunta

En mi IndexController, tengo actualmente indexAction (página de inicio), y loginAction logoutAction. Estoy tratando de eliminar "/ index /" de la URL para obtener domain.com/login en lugar de domain.com/index/login.

¿Cuál es la manera más limpia para lograr esto? ¿Hay una expresión regular que podemos utilizar? Yo no quiero volver / index / en la URL.

Mi solución actual, que creo que puede ser mejorado, es abajo. Además, lo que hace el primer parámetro en addRoute () hacer?

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'
      ))
    );
  }
}
¿Fue útil?

Solución

No hay nada que impove, usted tiene que crear rutas para cada acción. Esto le permitirá cambiar los valores predeterminados de ruta (módulo / controlador / acción) sin modificar su código.

El primer parámetro es el nombre de la ruta, lo que usted tiene que utilizar con url () ayudante en sus puntos de vista:

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

Actualizar. Puede utilizar dicha ruta, si se desea sólo una ruta sin "índice" en la URL:

$router->addRoute('default',
  new Zend_Controller_Router_Route(':action/*', array(
    'controller' => 'index',
  ))
);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top