filterからforward404するには?

filterからforward404したいと思って、

$this->getContext()->getController()->getAction($this->getContext()->getModuleName(), $this->getContext()->getActionName())->forward404Unless($office);

とやったところ、
sfError404Exception: in D:\php5\PEAR\symfony\action\sfAction.class.php on line 129
というエラー。
これは、例外をスローしているだけのようだ。
これは、filterは、forwardするたびに実行されてしまうからのようだ。
filterの実行条件が

 if ($this->isFirstCall())
{
 ...
}

の場合、fowardするたびに実行してしまう。
以下のように修正すると、意図したとおり、forwardされた。

if ($this->isFirstCall() && !($this->getContext()->getModuleName() == sfConfig::get('sf_error_404_module') && $this->getContext()->getActionName() == sfConfig::get('sf_error_404_action')))
{
 ...
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください