1

Zend Redirector Action Helper がどのように機能するかについての包括的な説明はありますか? リファレンス ガイドを読みましたが、まだ 100% 明確ではありません。例えば:

  • どうやら goToSimple() はリダイレクトというよりは forward() に似ています。これは、リダイレクト メッセージをブラウザに送り返さないということですか?

  • ブラウザにリダイレクト メッセージを送り返したい場合、どの Redirector メソッドを使用すればよいですか?

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

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

4

1 に答える 1

1

リダイレクタに関するいくつかの簡単なメモだけです。

header('Location: www.domain.com/new/location')リダイレクタは、スクリプトで使用する通常の PHP リダイレクトよりも少し多くのことを行いますexit()

Zend_Controller_Action_Helper_Redirectorを見ると、最終的にはまったく同じことが行われます。redirectAndExit()$_exit==true (デフォルト) の場合、すべてがどの呼び出しにつながり、呼び出しheader()で終了しexit()ます。ただし、フレームワーク、主にセッション (存在する場合) を適切に終了します。

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

メソッドgotoRoute()gotoSimple()使用して宛先 URL を組み立て、呼び出しますredirectAndExit()が、$_exit==true. または、すぐに終了する兄弟gotoRouteAndExit()を使用することもできます。gotoSimpleAndExit()gotoSimple メソッドは、いくつかのメソッドを使用して URL を組み立てる setGotoSimple に渡されます。

setGotoSimpleあなたの場合、メソッドとその中のメソッドの 1 つが宛先コントローラーを呼び出し、init() メソッドを起動すると想定することしかできません。ただし、確認のみで転送はできません。

于 2011-08-05T14:27:25.403 に答える