somemo's diary

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【symfony】validateのymlとactionの順序

validateのymlとactionの順序が気になったので試してみました。

順序

actionの処理は、sfExecutionFilter.class.php内で行っているので見てみました。

cacheのymlまたはyml本体からcacheを作成してチェックを行っています。その後、validateActionの処理を実行します。つまりymlの方が先でした。

validateActionを実行しない

ymlで既にエラーがあった場合でもvalidateActionを実行してしまいます。しかし、処理を行わないようにしたい場合、以下のように判断できます。

if (count($this->getRequest()->getErrors()) === 0) {
  return false;
} 

ymlで既にエラーがあった場合は、エラーがセットされているためです。あとの処理はhandleErrorに任せましょう。