Usando Zend_Controller_Router_Route para crear URLs amigables para las acciones en IndexController
-
18-09-2019 - |
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'
))
);
}
}
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',
))
);