2011-08-04 14 views
1

Zend Redirector Action Helperの仕組みの包括的な説明はありますか?私はリファレンスガイドを読んだが、まだ100%明確ではない。例:Zend Redirector Action Helperの解説

  • goToSimple()は、リダイレクトよりもforward()のほうがよく似ています。これは、リダイレクトメッセージをブラウザに返送しないことを意味しますか?

  • ブラウザにリダイレクトメッセージを送り返したい場合は、どのリダイレクタメソッドを使用する必要がありますか?

  • Actionヘルパーのinit()メソッドを再実行せずに、forward()タイプの動作を取得する方法はありますか?

この問題は、ACLを実装しているときに切り詰められました。 ACLアクションヘルパーがあり、そのinit()メソッドは 'current'というロールを追加します。リダイレクタのgoToSimple()を使用すると、ロールがすでに登録されているというエラーが表示されます。私はif (!$acl->hasRole('current'))を使用することができますが、最初はヘルパーのinit()を再実行しない方が良いと思います...

あなたの考えは大変ありがとうございます!

答えて

1

リダイレクタについてはあまり包括的ではありません。

リダイレクタは、スクリプトでheader('Location: www.domain.com/new/location')と一緒に使用する通常のPHPリダイレクトよりも若干多くの処理を行います.exit()の後に続きます。

を参照すると、Zend_Controller_Action_Helper_Redirectorはまったく同じことを行います。 $ _exit == true(デフォルト)の場合はすべてredirectAndExit()になり、header()を呼び出し、exit()コールで終了します。しかし、フレームワークを適切に終了させます。

リダイレクタは内部で転送しません。別のコードをsetCode()に設定しない限り、デフォルトの302コードを返します。

方法gotoRoute()gotoSimple()宛先URLを組み立ててredirectAndExit()を呼び出します(ただし$_exit==trueの場合のみ)。または、彼らの兄弟gotoRouteAndExit()gotoSimpleAndExit()をすぐに終了することができます。 gotoSimpleメソッドは、いくつかのメソッドを使用してURLをアセンブルするsetGotoSimpleに渡します。

あなたのケースでは、setGotoSimpleメソッドとその中のメソッドの1つが宛先コントローラを呼び出し、init()メソッドを起動すると仮定できます。ただし、確認のためだけに転送するのではありません。

関連する問題