[ 'content' => [ new Assert\NotBlank(), new Assert\Type('string'), ], 'role' => [ new Assert\NotBlank(), new Assert\Choice(['user', 'model']) ], 'meta' => new Assert\Optional([ new Assert\Collection([ 'model' => new Assert\Optional([ new Assert\Type('string'), ]), 'service' => new Assert\Optional([ new Assert\Type('string'), ]), 'price' => new Assert\Optional([ new Assert\Type(['float', 'integer']), ]), 'templates' => new Assert\Optional([ new Assert\Type('array'), ]), ]) ]), ], 'allowExtraFields' => true, ]); return $validator->validate($values, $constraint); } }