Symfony pre_submit 更改字段顺序
Symfony pre_submit change field order
给定以下表单类型,如何在提交前呈现我的第二个字段?
我尝试使用 $form->remove
但我总是会收到此错误:
Warning: Illegal offset type in isset or empty
不太确定如何解决这个问题。
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('survey', EntityType::class, [
'class' => SurveyManager::class,
'attr' => [
'class' => 'field-change',
],
])
->add('submit', SubmitType::class, [
])
->addEventListener(
FormEvents::PRE_SUBMIT,
function (FormEvent $event) {
$form = $event->getForm();
$data = $event->getData();
$modifier = $data['survey'];
$form->add('headquarter', EntityType::class, [
'class' => HeadQuarterManager::class,
'query_builder' => function (HeadQuarterManagerRepository $er) use ($modifier) {
return $er->getHeadquarter($modifier);
},
]);
}
);
}
Symfony 的表单组件不支持重新排列表单的字段。他们在 #5827 and #11241.
问题上讨论了此功能
您可以尝试删除 EventListener 中的字段 submit
,然后添加 headquerter
和 submit
(是的,再一次)。但我不确定这是否可行。
另一个解决方案是安装 IvoryOrderedFormBundle。它在表单字段中添加了新选项:position
.
我使用的解决方案是从 class 类型中删除提交按钮并手动将其添加到模板中,然后在提交按钮之前使用 {{ form_rest(form) }}会渲染好的。
给定以下表单类型,如何在提交前呈现我的第二个字段?
我尝试使用 $form->remove
但我总是会收到此错误:
Warning: Illegal offset type in isset or empty
不太确定如何解决这个问题。
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('survey', EntityType::class, [
'class' => SurveyManager::class,
'attr' => [
'class' => 'field-change',
],
])
->add('submit', SubmitType::class, [
])
->addEventListener(
FormEvents::PRE_SUBMIT,
function (FormEvent $event) {
$form = $event->getForm();
$data = $event->getData();
$modifier = $data['survey'];
$form->add('headquarter', EntityType::class, [
'class' => HeadQuarterManager::class,
'query_builder' => function (HeadQuarterManagerRepository $er) use ($modifier) {
return $er->getHeadquarter($modifier);
},
]);
}
);
}
Symfony 的表单组件不支持重新排列表单的字段。他们在 #5827 and #11241.
问题上讨论了此功能您可以尝试删除 EventListener 中的字段 submit
,然后添加 headquerter
和 submit
(是的,再一次)。但我不确定这是否可行。
另一个解决方案是安装 IvoryOrderedFormBundle。它在表单字段中添加了新选项:position
.
我使用的解决方案是从 class 类型中删除提交按钮并手动将其添加到模板中,然后在提交按钮之前使用 {{ form_rest(form) }}会渲染好的。