在未提交某些字段时,我在使用Symfony表单时遇到问题。
我的数据类FormData
中有一些默认值public $page = 1
。我在创建表单时使用该类。当我提交表单并且请求中没有特定字段时,数据类中的值将重置为null
。虽然我希望它保持默认状态(1
),因为它最初是在数据类中。
我有以下数据类(简化版):
class FormData
{
/**
* @Assert\Type("int")
* @var integer
*/
public $page = 1;
}
我有表格类型:
class FormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('page', IntegerType::class);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'empty_data' => new FormData()
));
}
}
我是如何使用表单的:
// $request->has('page') is false
$form = $this
->formFactory
->createNamedBuilder('', EntitiesType:class, new FormData())
->getForm();
$form->handleRequest($request);
$data = $form->getData();
// $data->page is null while I want it to be 1
是否有任何解决方案可以将$data->page
的值保持为1
?
PS:我知道如果我为特定字段配置->add('page', IntegerType::class, ['empty_data' => '1'])
,那么该值将设置为1
但我希望它从数据类中获取值。
答案 0 :(得分:2)
这是因为默认情况下POST
次请求handleRequest
方法会将$clearMissing
参数设置为true
的表单提交(设置不将参数发送到null:{{3} })。我想保留您的默认值,请使用:
$form->submit($data, false);