2

プロジェクトに zend フレームワークを使用していますが、必要な場所にパスをルーティングする必要があります。例: www.example.com/module/controller/action1 というパスがあり、内部的に www.example.com/module/controller/action2 にルーティングしたいとします。

しかし、主な問題は、モジュール、コントローラー、およびアクション [$this->_forward('action2', 'controller', 'module');] を指定する必要がある関数を使用したくないことです。このように: $this->_forward('module/controller/action2');.

誰かがその解決策を持っているなら、私に提案してください。私のプロジェクトの緊急の必要性。

ありがとう、ジトゥ

4

1 に答える 1

0

コントローラメソッド_forward()は、転送元の最初のアクションと同じコントローラおよびモジュールにある場合にのみ、アクションを受け入れることができます。

したがって、action1Action()メソッドでは、次のように呼び出すことができます。

$this->_forward('action2');

2番目のアクションが同じモジュール/コントローラーにない場合は、Zend_Controller_Actionを、他のすべてのアクションコントローラーが継承する独自の「ベース」アプリケーションコントローラーにサブクラス化して(私が見つけたZFプロジェクトのグッドプラクティス)、_forwardFromUrl()またはという別のアクションを作成できます。そのようなもので、URLを分解して渡します_forward()(または、これが1つ余分に必要な場合は、アクションコントローラーヘルパーを作成します)。

この例は単純化されており$url、常に次の形式であると想定していますmodule/controller/action

protected function _forwardFromUrl($url)
{
   $parts = array_reverse(explode("/",$url));
   $this->_forward($parts[0],$parts[1],$parts[2]);
}

お役に立てば幸いです。

于 2011-01-11T18:31:07.377 に答える