Optional
制約内に制約を設定するにはどうすればよいですかAll
。
基本的に、キーが配列内に存在し、その値が空白または任意の値を含むことができる配列であることを検証したいと考えています。
Collection
制約でキーを省略すると、エラーが発生します。
This field was not expected
を使用できることはわかってallowExtraFields
いますが、キーが存在することを検証したいと考えています。
私は使用しようとしていますが:
$optional = new Constraints\Optional();
$all = new Constraints\All($optional);
しかし、それは次の結果になります。
Fatal error: Class
'Symfony\Component\Validator\Constraints\OptionalValidator'
not found in
~\symfony\validator\Symfony\Component\Validator\ConstraintValidatorFactory.php
on line 36
完全なコードは次のとおりです。
use Symfony\Component\Validator\Validation;
use Symfony\Component\Validator\Constraints;
$input = [
'frames' => [
'header' => [
'test-header-1',
'test-header-2',
'',
],
'content' => [
'test-content-1',
'test-content-2',
'',
],
],
];
$optional = new Constraints\Optional();
$constraint = new Constraints\Collection([
'frames' => new Constraints\Collection([
'header' => new Constraints\All($optional),
'content' => new Constraints\All($optional),
]),
]);
$validator = Validation::createValidator();
$violations = $validator->validateValue($input, $constraint);
echo $violations;
私も試しました:
$optional = new Constraints\Optional([
new Constraints\Type('array'),
]);
$constraint = new Constraints\Collection([
'frames' => new Constraints\Collection([
'header' => $optional,
'content' => $optional,
]),
]);
しかし、それはキーが存在することを検証しません。