コレクション制約を使用してスカラーを検証しようとすると、symfonyバリデーターが例外をスローします。代わりに違反を返すと思います。symfonyバリデーターが無効なコレクションで例外をスローする
例コード:
use Symfony\Component\Validator\Validation;
use Symfony\Component\Validator\Constraints\Length;
use Symfony\Component\Validator\Constraints\Collection;
$validator = Validation::createValidator();
$input = 'testtesttest';
$constraints = [
new Collection([
'fields' => [
'one' => new Length(array('min' => 10))
]
])
];
$violationList = $validator->validate($input, $constraints);
が
PHP Fatal error: Uncaught Symfony\Component\Validator\Exception\UnexpectedTypeException: Expected argument of type "array or Traversable and ArrayAccess", "string" given in vendor/symfony/validator/Constraints/CollectionValidator.php:37
を投げる私はここで何か間違ったことをやっていますか?
他のConstraintクラス(NotBlank、Typeなど)の場合、バリデータは無効なものが発生した場合に違反リストに追加します。コレクションの場合に例外をスローするには、私にとって奇妙なようです。明らかに間違ったことをしていますか?
を違反を返し、例外をスローしない。 –
例えば '$ array = ['x' => ['a' =>(int)、 'b' =>(string)]]'のような配列を期待しているとします。 $ array ['x']の値が適切であることを確認するためにCollection制約を使用する必要がありますが、入力として '['x' => 5]を取得すると、バリデータは –
になります。データのスキーマではなく、データを検証します。バリデーションの周りでいつでも 'try {...} catch(){}'を行うことができます。 – Fracsi