我正在构建一个类似于两个非强制文件的表单:
$form = $this->createFormBuilder($contact);
$form->add('name');
$form->add('subject', TextType::class);
$form->getForm();
渲染后第一个字段不是必需的(这是正常的),但为什么第二个字段是?!这段代码出了什么问题?
谢谢:)
答案 0 :(得分:1)
问题必须是此表单的相关实体。名称和主题是否可以为空?如果未配置ORM,则需要手动为每个表单字段设置所需的属性。查看没有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'
)));
}
答案 1 :(得分:0)
必需的默认值在类方法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));