Привет, у меня такая проблема с типом коллекции
->add('attributes', CollectionType::class, [
'entry_type' => CriteriaForm::class,
'allow_add' => true,
'required' => false,
'constraints' => [
new Valid(),
],
])
, CriteriaForm выглядит следующим образом
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('from', TextType::class, [
'required' => false,
'constraints' => [
new Date([
'groups' => [
'date_type'
]
]),
new Type([
'type' => 'integer',
'groups' => [
'number_type'
],
])
]
])
->add('to', TextType::class, [
'required' => false,
'constraints' => [
new Date([
'groups' => [
'date_type'
]
]),
new Type([
'type' => 'integer',
'groups' => [
'number_type'
],
])
]
])
->add('formType', TextType::class, [
'constraints' => [
new NotNull(),
new NotBlank(),
]
])
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver
->setDefaults([
'validation_groups' => function (FormInterface $form) {
$data = $form->getData();
if ($data['formType'] === 'date') {
return ['Default', 'date_type'];
}
return ['Default', 'number_type'];
},
]);
}
и обратный вызов validation_groups никогда не выполняется
Редактировать:
Контроллер
$form = $this->formFactory->create(SearchCriteriaForm::class);
$form->submit(json_decode($request->getContent(), true));
if (!$form->isValid()) {
return new JsonResponse(null, Response::HTTP_BAD_REQUEST);
}
return new JsonResponse();
Редактировать 2: «Решение» У меня была также задана опция datamapper для формы, и я обнаружил, что данные сопоставляются с объектом до проверки, и это было проблемой.Я получил исключение из своего объекта, поэтому предположил, что проверка не работает.