yuchimiriのブログ

ぺちぱーです。

[Symfony]カスタムバリデータで特定のフィールドに対してエラーメッセージを設定する

カスタムバリデータ作った時、エラーメッセージが特定のフィールドじゃなくてフォーム全体に対して設定されて困った。


特定のフィールドに対して設定するにはPropertyPathを書き換えてaddViolationでエラーを追加すればばよいらしい...

// isValid()の中で
$propertyPath = $this->context->getPropertyPath();                                  
$this->context->setPropertyPath($propertyPath .'.'. $constraint->field);
$this->context->addViolation($constraint->message, $params, $invalidValue);

あとこのあとreturn false;とかするとフォーム全体に対してエラー判定がかかってしまって、空エラーみたいのが入ったりするので注意