【发布时间】:2019-03-04 11:35:37
【问题描述】:
您好,我对集合类型有这样的问题
->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:“解决方案” 我还将数据映射器选项设置为表单,我发现数据在验证之前已映射到对象,这就是问题所在。我的对象出现异常,所以我认为验证不起作用。
【问题讨论】:
-
你能告诉我你的控制器吗?
标签: php symfony symfony-forms symfony4