2

次のモジュールを備えたZendアプリケーションがあります。

Users
Shop
etc...
Front - A content management module

フロントモジュールには次のコントローラーがあります。

UsersController
ShopController
AuthController
etc...

開発サイクルの途中で、ZendアプリケーションのデフォルトモジュールをFrontモジュールに設定することにしましたが、http://domain.com/front/users/listがhttp:/として生成されるようになったため、誤ってリンクを切断ました。 /domain.com/users/list、これは現在、間違ったアクションを指しています。

URLビューヘルパー(つまり$this->url(array('module' => 'front', 'controller' => 'users', 'action' => 'list'));)を使用してリンクを生成していますが、デフォルトモジュールをフロントモジュールに切り替えるため、「フロント」URIセグメントは省略されています。

これがなぜそうなのかは完全に理解していますが、競合を避けるために、Frontモジュールの下のすべてのコントローラーの名前を変更することは避けています。

私の質問は、URLビューヘルパーに、デフォルトとしてすでに設定されている場合でも、常に「front」モジュールURIセグメントを含めるように指示する方法はありますか?

4

1 に答える 1

1

私の質問は、URLビューヘルパーに、デフォルトとしてすでに設定されている場合でも、常に「front」モジュールURIセグメントを含めるように指示する方法はありますか?

同じ名前で独自のURLビューヘルパーを作成し、デフォルトのURLビューヘルパーをオーバーライドして、ブートストラップのZend_Viewオブジェクトに追加できます。

   $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
    if (null === $viewRenderer->view) 
    {
        $viewRenderer->initView();
    }

    $view = $viewRenderer->view;

    $view->addHelperPath('/path/to/some/helpers', 'My_View_Helper');

次に、クラスMy_View_Helper_Urlを作成して、Zend_View_Helper_UrlオーバーライドURLメソッドを拡張します。この手順に関する参照フォームZFドキュメントは次のとおりです

実際、addHelperPath()メソッドを使用してパスを「スタック」できます。スタックにパスを追加すると、Zend_Viewは、要求されたヘルパークラスに対して最近追加されたパスを調べます。これにより、独自のカスタムヘルパーを使用して、ヘルパーの初期配布を追加(またはオーバーライド)することができます。

http://domain.com/users/listとは言っても、デフォルトのモジュールを前面に指定しているので、そもそも正しく機能しているはずです。

于 2012-06-13T06:40:57.400 に答える