公式ドキュメントを使用して複数のバリデータを作成しましたが、それらはすべて正常に動作しますが、個別に使用した場合のみです。バンドルでこれを定義しました:
# Resources/config/validation.ynl
SF\SomeBundle\Entity\SomeEntity:
properties:
name:
- NotBlank: ~
- SF\UtilsBundle\Validator\Constraints\ContainsAlphanumeric: ~
- SF\UtilsBundle\Validator\Constraints\MinLength: ~
ContainstAlphanumeric クラスバリデータ:
if (!preg_match('/^[a-z\d_]$/i', $value, $matches)) {
$this->context->addViolation($constraint->message, array('%string%' => $value));
}
MinLength クラスバリデーター
$min = 5;
if( strlen($value) < $min )
{
$this->context->addViolation($constraint->message, array('%string%' => $value, '%min_length%' => $min));
}
そのため、フォームを送信して入力の値が「q」の場合、バリデーター MinLength は長さエラーを返しますが、同じ入力の値が「qwerty」の場合、バリデーター ContainsAlphanumeric は無効な文字メッセージを返します。
何か案は?
編集:
Resources/config/validation.yml ファイルを変更して、ネイティブのSF2 Contraintsの長さバリデーターを使用しました。
properties:
name:
- NotBlank: ~
- Length: { min: 5, minMessage: "El nombre debe tener almenos {{ limit }} caracteres." }
- SF\UtilsBundle\Validator\Constraints\ContainsAlphanumeric: ~
そして、私は新しい振る舞いを発見しました:いくつかのエラーは小枝テンプレートに表示されます
{{ form_errors(form) }}
およびその他のエラー
{{ form_errors(form.some_field) }}
これは奇妙です!