Symfony2: Как я могу проверить объект / массив с его ограничениями в другом объекте / массиве?
Он построен динамически, аннотации не вариант. У меня есть ограничения в массиве.
Кажется, вам нужно вручную создать валидатор, но я быстро застрял в точке, где вам нужно создать MetaDataFactory, который нуждается в загрузчике, но все загрузчики имеют задачу загрузки метаданных из файла... Я не думаю, что я " Я делаю это правильно.
Просто сказал:
У меня есть массив / объект с ключами / значениями. Я хочу, чтобы они были проверены другим массивом, который содержит ограничения.
Невозможно перебрать ключи и вызвать validate для каждого из них, так как некоторые полагаются на значения контекста из других ключей.
$array = [
'key1' => 'abc',
'key2' => 'def',
];
$constraints = [
'key1' => new All([
new Constraint..,
new CallbackConstraint.., // <- this one checks key2 for its value
]),
'key2' => new NotBlank
];
Я также могу построить один массив, содержащий оба.
Againt, объект / массив создается динамически, я не могу проверить сам контейнер. Речь идет о ключах внутри него, которые сами по себе являются определениями.
Так что я бы хотел:
$validator->validate($array, $constraints);
Я могу представить, что вам нужен собственный класс MetaDataFactory / Loader / Context или что-то в этом роде, проблема в том, что для проверки обратного вызова нужен доступ $this->getRoot()
чтобы добраться до других ценностей
Не говоря уже о том, что вам нужно что-то вроде CallbackLoader, в котором вы создаете свое собственное отображение свойств => ограничений. Но LoaderInterface требует конкретной реализации ClassMetaData, которая сама по себе не имеет никакого способа работать с массивами или ArrayObjects, если у вас нет методов / свойств для этого ArrayObject. Но - так как мой контейнер построен динамически, я не могу этого иметь. Методы методов не являются опцией из-за вызовов свойства /method_exists.