0

からのすべてのリクエストを転送する予定です:

.com/m/

.com/

モジュールのブートストラップでこれを実行できると思いましたが、フロント コントローラーはまだセットアップされていません。フロント コントローラ プラグインについての言及をよく見かけますが、このモジュールだけのためにどのように設定すればよいでしょうか?

ばかげた質問で申し訳ありませんが、私はまだ Zend フレームワークを理解しようとしています。

4

1 に答える 1

1

これは、特定のモジュールへのすべてのトラフィックをデフォルト モジュールにルーティングするコントローラー プラグインです。トラフィックをルーティングするには、リクエストを転送する (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());
于 2012-10-04T21:56:47.247 に答える