昨日作ったのに
コミットしわすれてました。帰ったら入れようと思います。
問題だったらコミット後に削除してください。(^^;
http://d.hatena.ne.jp/bobchin/20060215/1140012268
内容は前にも書いたかもしれませんが、アクションのフォワードをしたときに
エラーリストを取得するのが面倒というものです。
カレントアクションのエラーリストは用意に取得できるのですが、
アクションをフォワードし複数になった場合、表示を担当するのは最後のアクションなんですが、そのアクション以前にエラーが起こっていた場合アクション名を指定しないと
エラーを取ってこれません。
なので、actionChainに格納されている全エラーメッセージを取得するメソッドを
追加しました。
あと、actionChainでアクションクラスを取ってくるのにアクション名を指定すると
取ってこれますが、actionChainクラス内で保持しているアクション名を取ってこれませんので、困るんじゃないか?(というか自分が困った)と思ったので追加してます。
※ErrorListクラスのgetMessageって禁じ手使ってるような気が・・・
ErrorListクラス
/** * 登録されているエラー文字列の配列を返却 * * @return array エラー文字列の配列 * @access public * @since 3.0.0 */ function getMessages() { $container =& DIContainerFactory::getContainer(); $actionChain =& $container->getComponent("ActionChain"); $errorList =& $actionChain->getCurErrorList(); $messages = $errorList->getSelfMessages(); return $messages; } /** * 自身に登録されているエラー文字列の配列を返却 * * 本来はこちらが"getMessages"である気がするが既に利用しているので * 下位互換のためメソッド名を変えて追加しておく * * @return array エラー文字列の配列 * @access public * @since 3.0.0 */ function getSelfMessages() { $messages = array(); foreach ($this->_list as $k => $v) { $messages = array_merge($messages, $v); } return $messages; } /** * 登録されているすべてのエラー文字列の配列を返却 * * @return array エラー文字列の配列 * @access public * @since 3.1.0 */ function getAllMessages() { $container =& DIContainerFactory::getContainer(); $actionChain =& $container->getComponent("ActionChain"); $actions = $actionChain->getAllActionName(); $messages = array(); foreach ($actions as $action) { $errorList = $actionChain->getErrorListByName($action); $mes = $errorList->getSelfMessages(); $messages = array_merge($messages, $errorList->getSelfMessages()); } return $messages; }
actionChainクラス
/** * 登録されているすべてのAction名を返却 * * @return array Actionの名前のリスト * @access public * @since 3.1.0 */ function getAllActionName() { return array_values($this->_position); }