0

フィールドを比較してオブジェクトを検証するカスタムバリデーターを作成しました(EntityManagerを使用してフィールドを検証します)。オブジェクトが無効な場合、バリデーターはフィールドではなくエンティティに関連付けられているため、MyValidatorはフォームオブジェクトにエラーメッセージを追加します。

/**
 * @StrictAssert\MyValidator
 */
class State extends MyEntity
{
...
}

検証が失敗したときにフォームエラーの代わりにフィールドエラーを追加する方法はありますか?

4

1 に答える 1

1

バリデーターでは、違反していたフィールドを指定する必要があります。

$ context-> setPropertyPath($ propertyPath;

フィールド長チェックの簡単な例を次に示します。

/**
 * @Assert\Callback(methods={"MyValidator"})
 */
class MyEntity
{

   public function MyValidator(ExecutionContext $context)
   {

    $propertyPath = $context->getPropertyPath() . '.length';

        //add some logic
       if($this->getLength()>255){
           //set the pointer on the field in error
           $context->setPropertyPath($propertyPath);

           //generate the error
           $context->addViolation('Incorrect length for type', array(), null);
       }
   }


}
于 2012-10-12T07:54:46.853 に答える