В моем коде я хочу извлечь сообщения и поля из нарушений ограничений в массивы.PropertyAccess
имеет setValue
для этого.Он работает с ключами массива, но не работает с атрибутами объекта.
Использование setValue
для атрибутов объекта приводит к
fatal error: Uncaught Symfony\Component\PropertyAccess\Exception
\NoSuchPropertyException: Cannot write property "first_name" to an array.
Maybe you should write the property path as "[first_name]" instead?
Насколько я понимаю, PropertyAccess
унифицирует доступ к обоим массивам иобъекты.Почему тогда setValue
не работает с атрибутами объекта?
Вот фрагмент кода:
$user = new User('', 'Novak', 'pnovak@examplecom');
$validator = Validation::createValidatorBuilder()->addXmlMapping('validation.xml')->getValidator();
$violations = $validator->validate($user);
$accessor = PropertyAccess::createPropertyAccessor();
$messages = [];
if (0 === count($violations)) {
echo 'validation passed';
} else {
foreach ($violations as $violation) {
// $messages[$violation->getPropertyPath()] = $violation->getMessage();
$accessor->setValue($messages,
$violation->getPropertyPath(),
$violation->getMessage());
}
dump($messages);
}