我在我的应用程序中的实体中定义了以下变量。我有这个,以及其他可以通过表单界面更新的字段,我希望能够在该表单上选中并取消选中此框。
我可以勾选方框并提交表格,但似乎当我取消选中此框时,我无法提交表格。它给了我一个Please check this box if you want to proceed
。
/**
* @var boolean $updatesNeeded
*
* @ORM\Column(name="updates_needed", type="boolean", nullable=false)
*/
private $updatesNeeded;
我尝试将nullable=false
更改为nullable=true
并更新架构,但它似乎无法正常工作。任何想法都会非常感激。
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
class BlahType extends AbstractType
{
/**
* @param \Symfony\Component\Form\FormBuilder $builder
* @param array $options
*/
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('stuff')
->add('updatesNeeded', 'choice', array('required' => false))
->add('anothervar');
}
}
答案 0 :(得分:26)
此错误是因为输入标有HTML5属性required="required"
。在表单类型中,您可以通过在此复选框上将required
选项设置为false来禁用此功能。
$builder->add('updatesNeeded', 'choice', array('required' => false));
http://symfony.com/doc/current/book/forms.html#book-forms-html5-validation-disable
答案 1 :(得分:-1)
如何使用nullable=""
答案 2 :(得分:-3)
好吧,好像我使用的是我网站的错误版本。提到的所有方法都有效,我只想在下面总结一下将来遇到这样一个问题的人。
这里的问题是HTML5喜欢自己验证表单并向任何表单输入添加required="required"
。通常,这可能是一个有用的东西,但是对于像复选框这样的东西,你想要选择不选中它们并在没有浏览器抱怨的情况下提交表单。
有几种方法可以解决这个问题,有些方法比其他方法更好。
第一种是简单地使用HTML5禁用表单的所有验证,如官方symfony docs所述。
另一种方法是在评论中向实体变量添加信息,制作nullable=true
。这允许数据库中的相应列具有空值,这可能适合您的情况,也可能不适合您的情况。如下所示。
/**
* @var boolean $varName
*
* @ORM\Column(name="var_name", type="boolean", nullable=true)
*/
private $varName;
最后,在构建表单时,您可以使用某些选项在表单中进行验证。 docs详细信息并提供更多示例,但就我们的目的而言,重要的是您可以设置'required' => false
,如下所示。
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
class BlahType extends AbstractType
{
/**
* @param \Symfony\Component\Form\FormBuilder $builder
* @param array $options
*/
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('stuff')
->add('checkbox_var', 'checkbox', array('required' => false))
->add('anothervar');
}
}
感谢所有帮助我解决此问题的人。我希望这有助于将来必须处理这些问题的人。