Zend framework 使用Zend_Controller_Router_Route为IndexController中的操作创建友好的URL

Zend framework 使用Zend_Controller_Router_Route为IndexController中的操作创建友好的URL,zend-framework,bootstrapping,zend-controller-router,Zend Framework,Bootstrapping,Zend Controller Router,在我的IndexController中,我目前有indexAction(主页)、loginAction和logoutAction。我正在尝试从URL中删除“/index/”以获取domain.com/login,而不是domain.com/index/login 实现这一目标最干净的方法是什么?有我们可以使用的正则表达式吗?我不想在URL中使用/index/ 我目前的解决方案(我相信可以改进)如下。另外,addRoute()中的第一个参数做什么 没有什么需要改进的,你必须为每一个动作创建路线。这

在我的IndexController中,我目前有indexAction(主页)、loginAction和logoutAction。我正在尝试从URL中删除“/index/”以获取domain.com/login,而不是domain.com/index/login

实现这一目标最干净的方法是什么?有我们可以使用的正则表达式吗?我不想在URL中使用/index/

我目前的解决方案(我相信可以改进)如下。另外,addRoute()中的第一个参数做什么


没有什么需要改进的,你必须为每一个动作创建路线。这将允许您更改路由默认值(模块/控制器/操作),而无需修改代码

第一个参数是路由名称,必须在视图中与url()帮助器一起使用:

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

我不能使用它,因为我正在使用Zend_导航来管理链接。我正在寻找一种使用正则表达式的方法,这样我只需要使用addRoute()一次。我更新了我的答案。顺便问一下,Zend_导航有什么问题?谢谢!除了我必须将addRoute()的第一个参数从“default”更改为“index”之外,这一切都起到了作用,否则我的URL将变成domain.com/index/controller/login。Zend_导航没有问题,我的意思是我不是自己构建超链接,我只是打印$this->Navigation()->menu();从我的布局。
<a href="<?php echo $this->url(array(), 'login', true); ?>">Login</a>
$router->addRoute('default',
  new Zend_Controller_Router_Route(':action/*', array(
    'controller' => 'index',
  ))
);