Zend framework 在Zend中有一个默认控制器

Zend framework 在Zend中有一个默认控制器,zend-framework,module,routing,Zend Framework,Module,Routing,我在Zend Framework 1.11(site.com/module/controller/action)中有一个基于模块的ArhitArchitecture 我已将我的站点设置为具有默认模块,因此,如果我将站点模块作为默认模块,并且您转到site.com/something1/something2,它实际上会将您带到site.com/site/something1/something2 我想进一步实现同样的事情1级:假设你去site.com/something,它应该带你去site.co

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

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

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


这样的事情可能吗?

如果我理解正确,这是可能的,下面是一个示例,您可以将其放入引导程序中:

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

伟大的路线正是我所需要的。谢谢