Symfony 2.8 - FormBuilder:为什么当我定义它的类型时字段变成必需的?
Symfony 2.8 - FormBuilder : why field becomes required when I define its type?
我正在构建一个包含两个非强制性文件的表格:
$form = $this->createFormBuilder($contact);
$form->add('name');
$form->add('subject', TextType::class);
$form->getForm();
渲染后第一个字段不是必需的(这是正常的)但为什么第二个是?!这段代码有什么问题?
谢谢:)
问题一定是与此表单相关的实体。 name 和 subject 可以为空吗?如果没有配置 ORM,那么您需要为每个表单字段手动设置 required 属性。查看没有 ORM 的联系表单示例。
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('fullName', null, array(
'required' => true,
'attr' => array(
'placeholder' => 'Name',
'class' => 'text gradient'
)))
->add('email','email', array(
'required' => true,
'attr' => array(
'placeholder' => 'Email',
'class' => 'text gradient'
)))
->add('subject', null, array(
'required' => true,
'attr' => array(
'placeholder' => 'Subject',
'class' => 'text gradient'
)))
->add('body', 'textarea', array(
'required' => true,
'attr' => array(
'placeholder' => 'Message',
'class' => 'text gradient'
)));
}
所需的默认值在类型 class 方法中定义 configureOptions()
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'required' => true,
));
}
以及此类型的所有父项(父项由 getParent()
方法定义)
第一个父级是 Symfony\Component\Form\Extension\Core\Type\FormType
并且需要的默认值定义为 true,奇怪的是不需要第一个输入。
您可以在添加新元素时定义必需的$form->add('subject', TextType::class, array('required' => false));
我正在构建一个包含两个非强制性文件的表格:
$form = $this->createFormBuilder($contact);
$form->add('name');
$form->add('subject', TextType::class);
$form->getForm();
渲染后第一个字段不是必需的(这是正常的)但为什么第二个是?!这段代码有什么问题?
谢谢:)
问题一定是与此表单相关的实体。 name 和 subject 可以为空吗?如果没有配置 ORM,那么您需要为每个表单字段手动设置 required 属性。查看没有 ORM 的联系表单示例。
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('fullName', null, array(
'required' => true,
'attr' => array(
'placeholder' => 'Name',
'class' => 'text gradient'
)))
->add('email','email', array(
'required' => true,
'attr' => array(
'placeholder' => 'Email',
'class' => 'text gradient'
)))
->add('subject', null, array(
'required' => true,
'attr' => array(
'placeholder' => 'Subject',
'class' => 'text gradient'
)))
->add('body', 'textarea', array(
'required' => true,
'attr' => array(
'placeholder' => 'Message',
'class' => 'text gradient'
)));
}
所需的默认值在类型 class 方法中定义 configureOptions()
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'required' => true,
));
}
以及此类型的所有父项(父项由 getParent()
方法定义)
第一个父级是 Symfony\Component\Form\Extension\Core\Type\FormType
并且需要的默认值定义为 true,奇怪的是不需要第一个输入。
您可以在添加新元素时定义必需的$form->add('subject', TextType::class, array('required' => false));