新しいレコードを作成するためと、そのレコードを編集するための 2 つの別々のコンテキストでフォーム クラスを使用しています。URLフィールドが一意であることを確認するために、次のようにポストバリデーターを設定しました。
$this->validatorSchema->setPostValidator(new sfValidatorAnd(array(
new sfValidatorDoctrineUnique(array('model' => 'Page', 'column' => array('url')), array('invalid' => 'This URL already exists.'))
)));
バリデーターは、新しいレコードを作成するときにうまく機能します。ただし、既存のレコードを編集すると、それ自体が重複として検出されるため、エラーがスローされます。つまり、レコードを編集しても URL を変更しないと、重複エラーがスローされます。
これは一般的な問題に違いないので、Symfony でこれを処理するにはどうすればよいのでしょうか? 基本的に、保存時にそれ自体を無視して (重複は存在しません)、ポストバリデーターを実行して、真の重複が存在しないようにしたいと考えています。