我希望转发我的所有要求:
的.com /米/
到
的.com /
我想我可以尝试在模块的bootstrap中执行此操作,但前控制器尚未设置。我一直看到前端控制器插件的提及,但我该如何为这个模块设置它?
对于这些愚蠢的问题感到抱歉,我仍然试图掌握Zend框架。
答案 0 :(得分:1)
这是一个控制器插件,可将特定模块的所有流量路由到默认模块。我提供了两种方式来路由流量,通过转发请求(url保持不变但执行默认模块),或者然后将浏览器重定向到默认模块。
注意,这是未经测试但应该有效。如果您对此有疑问或问题,请告诉我。
<?php
class Application_Plugin_ModuleRedirector extends Zend_Controller_Plugin_Abstract
{
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
$module = $request->getModuleName();
$controller = $request->getControllerName();
$action = $request->getActionName();
// don't execute plugin if not in the module "m"
if ($module != 'm') {
return ;
}
// foward to default module with same controller and action
$request->setModuleName('default')
->setControllerName($controller)
->setActionName($action);
// OR remove the above and use this for a hard redirect
$urlHelper = new Zend_View_Helper_Url();
$url = $urlHelper->url(array(
'module' => 'default',
'controller' => $controller,
'action' => $action));
$redirector = Zend_Controller_Action_HelperBroker::
getStaticHelper('redirector');
$redirector->gotoUrl($url);
}
}
要激活它,请使用Front Controller注册插件:
Zend_Controller_Front::getInstance()->registerPlugin(new Application_Plugin_ModuleRedirector());