設定ファイル (webfront.conf) |
[action-mapping] /new = /src/action/CreateAction /update = /src/action/UpdateAction /delete = /src/action/UpdateAction::delete /welcome = /src/pages/welcome.tpl /read = /src/action/ReadAction#command [form-mapping] /new = /src/form/CreateForm /update = /src/form/UpdateForm /delete = /src/form/UpdateForm [filter-mapping] /* = CFilter /update = AFilter, BFilter [filter] AFilter = /src/filter/AFilter BFilter = /src/filter/BFilter CFilter = /src/filter/CFilter |
[action-mapping] の4番目のようにアクションクラスパスではなくファイル名を記述するとフレームワークはそのファイルを直接表示します。HTMLなどのファイルを表示するだけのリクエストのときはこのように記述します。[action-mapping] の5番目はStrutsのLookupDispatchActionと同じような動作が可能で、フォーム画面内にある複数のsubmitボタンごとにそれぞれ処理するメソッドを指定するとこができます。5番目の場合の例でソースを使って説明します。
テンプレートファイル (read.tpl) |
<html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> </head> <body> <form name="read_form" action="/read" method="post"> <input type="submit" value="<?= MessageResources::get('button.list') ?>" name="command" /><br /><br /> <input type="submit" value="<?= MessageResources::get('button.back') ?>" name="command" /> </form> </body> </html> |
submitのname属性には設定ファイルで#のあとに記述した値と同一の値を設定します。5番目の場合だと /src/action/ReadAction#command なので command です。
アクションクラス (ReadAction.php) |
class ReadAction extends DispatchAction { /** * ボタンとアクションをマッピングする * * @return array */ protected function getKeyMethodMap() { return array( "button.list" => "list", "button.back" => "back" ); } /** * 一覧表示ボタンのアクション * * @param HttpRequest $request * @param Form $form * @return string */ public function list($request, $form) { // 一覧表示処理 return "read.tpl"; } /** * 戻るボタンのアクション * * @param HttpRequest $request * @param Form $form * @return string */ public function back($request, $form) { // 戻る処理 return "read.tpl"; } } |
この動作をさせるアクションクラスはDispatchActionクラスを継承して書き、submitボタンとコールするメソッドをマッピングさせるためにDispatchActionクラスの抽象メソッドgetKeyMethodMap()を実装してメッセージリソースのキーとメソッド名を連想配列でセットしていきます。
メッセージリソース (messages.conf) |
button.list = 一覧表示 button.back = 戻る |
submitボタンのボタン名を記述したメッセージリソースファイルは上記のようになります。
これでフォーム画面の一覧表示ボタンを押下するとReadActionクラスのlist()がコールされ、戻るボタン押下でReadActionクラスのback()がコールされるようになります。フレームワークの設定ファイルのアクションに関する項目は以上です。次回はフォームについて説明したいと思います。