1

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

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

我认为可以改进的当前解决方案如下。另外,addRoute() 中的第一个参数是做什么的?

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'
      ))
    );
  }
}
4

1 回答 1

2

没有什么可以改进的,你必须为每一个动作创造路线。这将允许您在不修改代码的情况下更改路由默认值(模块/控制器/操作)。

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

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

更新。你可以使用这样的路由,如果你只想要一个在 url 中没有“索引”的路由:

$router->addRoute('default',
  new Zend_Controller_Router_Route(':action/*', array(
    'controller' => 'index',
  ))
);
于 2010-03-09T20:08:30.230 回答