0
我期待轉發我所有的請求的來源:路由所有模塊的流量默認模塊Zend框架
的.com/M/
到
的.com/
我以爲我可以嘗試在模塊的引導程序中執行此操作,但前端控制器尚未安裝。我不斷看到前端控制器插件的提及,但是我如何爲這個模塊設置它?
對於愚蠢的問題,我仍然試圖掌握Zend Framework。
我期待轉發我所有的請求的來源:路由所有模塊的流量默認模塊Zend框架
的.com/M/
到
的.com/
我以爲我可以嘗試在模塊的引導程序中執行此操作,但前端控制器尚未安裝。我不斷看到前端控制器插件的提及,但是我如何爲這個模塊設置它?
對於愚蠢的問題,我仍然試圖掌握Zend Framework。
這裏是一個控制器插件,用於將所有流量傳送到特定模塊到默認模塊。我給出了兩種路由流量的方式,通過轉發請求(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);
}
}
要激活它,與前端控制器註冊插件:
Zend_Controller_Front::getInstance()->registerPlugin(new Application_Plugin_ModuleRedirector());
我很高興地看到你的答案,並簡單URL,這像宣傳的那樣......但後來我跑進我所有的幻想路由和出於某種原因,這段代碼無法識別URL中的值是變量的模塊... :( – stagl
)其中一個URL不起作用的示例是什麼?preDispatch插件在URL已經被分解用於路由,所以有可能這些更復雜的URL根據您定義的路由沒有被正確路由? – drew010