アクションチェイン

はじめに

アクションチェインは、ロジックの分離とコントローラロジックを再利用するために適した仕組みです。

よくある使用法は、(たとえばブログのような)複数のウィジェットに分かれたページを生成するときに、そのウィジェット一つ一つを、 一つのアクションコントローラーとして切り出し、実際の表示では、各ウィジェットを並べるだけ、と言ったような使用方法です。

アクションチェインを使用することにより、高度にモジュール化され簡単にコンポーネントを再利用できるアプリケーションを作成できます。

クラスリファレンス

サンプルコード

アクションチェインはEnviControllerを使用する事により呼び出せます。


<?php
$data 
EnviRequest::getAttributeAll();
EnviController::setActionChain('出力するキー''アクション名''モジュール名'$data);
$res EnviController::go();
$this->Renderer('html'$res['出力するキー']);

注意上記の例のように、明示的に第四引数に渡さない限り、EnviRequest::setAttribute されたデータはアクションチェイン内に引き継がれないことに注意して下さい。 また、同じように、ActionChain内で追加変更された、Attributerのデータは、 呼び出し元のActionControllerクラスから参照することは出来ません。
警告 自分をアクションチェインで呼び出すと、無限ループとなります。
警告 個別にActionを定義した場合、モジュール名が違ったとしても、同名Actionをへのアクションチェインおよび、EnviController::forwardは使用できません。 この問題に関しては、回避方法が存在します。 アクションコントローラーの項目を参照して下さい。

アクションチェイン内の404,403

アクションチェイン内で 404 が発生した場合、 Envi404Exception がthrowされます。 もし、キャッチされない場合、 フレームワークのデフォルトの 404処理を実行します。 しかしながら、そうしないようにその 404 をCatchすることでハンドリングすることも出来ます。

また、アクションチェイン内で 403 が発生した場合、 Envi403Exception がthrowされます。 もし、キャッチされない場合、 フレームワークのデフォルトの 403処理を実行します。 しかしながら、そうしないようにその 403 をCatchすることでハンドリングすることも出来ます。

アクションチェイン内からのRedirect、Kill

アクションチェイン内で、EnviController::redirect()の使用、もしくは、EnviController::kill()の使用がされた場合は、 それぞれ、redirectException、killExceptionがthrowされます。 通常では、これを受けることはなく、フレームワークが受け処理の中断を受け付けますが、これをCatchすることでハンドリングすることも出来ます。