昨日作ったのに

コミットしわすれてました。帰ったら入れようと思います。
問題だったらコミット後に削除してください。(^^;

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);
    }