在Zend中有一个默认控制器

时间:2012-08-04 18:13:54

标签: zend-framework module routing

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

我已将我的网站设置为默认模块,因此,如果我将site模块作为默认模块,并且您转到site.com/something1/something2,则实际上会将您带到{{1} }。

我希望进一步达到同样的目标:如果你转到site.com/site/something1/something2,它应该带你去site.com/something。我不是在谈论重定向,只是重新路由。

这样的事情会成为可能吗?

1 个答案:

答案 0 :(得分: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);
}