Symfonyではvalidateディレクトリ内にあるconfirm.ymlに定義されたルールが存在しないか、ルールに合致していれば、templateディレクトリ内の(アクション名)Success.phpが呼び出されるが、ルールに合致しない場合には(アクション名)Error.phpが呼び出される。
入力内容のエラー処理は多くの場合入力前のテンプレートにエラーを付けて表示したりするケースが多いので、これでは同じ内容のテンプレートを2つ書かなければならず問題がある。
そこでactionsディレクトリ内にあるaction.class.phpのhandleError(アクション名)関数をオーバーライドして戻り値を設定してあげるとテンプレートを共通化できる。
※Confirmアクションの例(ここではregistアクションからconfirmアクションに遷移するケースを考える)
public function handleErrorConfirm()
{
//通常テンプレートを返す
return sfView::SUCCESS;
}
なお、エラーメッセージはテンプレート中(今回の場合には、registSuccess.php)に
echo form_error(‘nickname’);
などとすればよい。