我在Zend Framework 1.11(site.com/module/controller/action)中有一个基于模块的架构。
我已将我的网站设置为默认模块,因此,如果我将site
模块作为默认模块,并且您转到site.com/something1/something2
,则实际上会将您带到{{1} }。
我希望进一步达到同样的目标:如果你转到site.com/site/something1/something2
,它应该带你去site.com/something
。我不是在谈论重定向,只是重新路由。
这样的事情会成为可能吗?
答案 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);
}