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'))) { ... }