からのすべてのリクエストを転送する予定です:
.com/m/
に
.com/
モジュールのブートストラップでこれを実行できると思いましたが、フロント コントローラーはまだセットアップされていません。フロント コントローラ プラグインについての言及をよく見かけますが、このモジュールだけのためにどのように設定すればよいでしょうか?
ばかげた質問で申し訳ありませんが、私はまだ Zend フレームワークを理解しようとしています。
からのすべてのリクエストを転送する予定です:
.com/m/
に
.com/
モジュールのブートストラップでこれを実行できると思いましたが、フロント コントローラーはまだセットアップされていません。フロント コントローラ プラグインについての言及をよく見かけますが、このモジュールだけのためにどのように設定すればよいでしょうか?
ばかげた質問で申し訳ありませんが、私はまだ Zend フレームワークを理解しようとしています。
これは、特定のモジュールへのすべてのトラフィックをデフォルト モジュールにルーティングするコントローラー プラグインです。トラフィックをルーティングするには、リクエストを転送する (URL は同じままですが、既定のモジュールを実行する) か、ブラウザーを既定のモジュールにリダイレクトするという 2 つの方法があります。
これはテストされていませんが、動作するはずです。質問や問題がある場合はお知らせください。
<?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());