1

我在 Zend Framework 1.11 (site.com/module/controller/action) 中有一个基于模块的架构。

我已将我的站点设置为具有默认模块,因此,如果我将site模块设置为默认模块,并且您转到site.com/something1/something2,它实际上会带您到site.com/site/something1/something2.

我想进一步实现同样的事情 1 级:说如果你去site.com/something,它应该带你去site.com/site/index/something。我不是在谈论重定向,只是重新路由。

这样的事情可能吗?

4

1 回答 1

2

如果我理解正确,这是可能的,这是您可以放入 Bootstrap 的示例:

protected function _initControllerDefaults()
{
    $this->bootstrap('frontcontroller');
    $front = Zend_Controller_Front::getInstance();

    // set default action in controllers to "something" instead of index
    $front->setDefaultAction('something');

    // You can also override the default controller from "index" to something else
    $front->setDefaultControllerName('default');
}

如果您需要基于访问的 URL 动态默认操作名称,那么我认为您正在寻找自定义路由。在这种情况下尝试:

protected function _initRoutes()
{
    $router = Zend_Controller_Front::getInstance()->getRouter();

    // Custom route:
    // - Matches  : site.com/foo or site.com/foo/
    // - Routes to: site.com/site/index/foo

    $route = new Zend_Controller_Router_Route_Regex(
            '^(\w+)\/?$',
            array(
                'module'     => 'site',
                'controller' => 'index',
            ),
            array(1 => 'action')
    );
    $router->addRoute('actions', $route);
}
于 2012-08-04T19:13:55.877 回答