这是我的实体类的一部分:
/**
* @var integer
*
* @ORM\Column(name="student", type="integer", nullable=true)
*/
private $student;
我的表单类的这一部分:
$builder
->add('student', 'choice', ['label'=> false,
'expanded' => true,
'choices' => (Array)new StudentEnum(),
])
;
广告这是输出:
<input id="xxxxx_0" type="radio" value="4" required="required" name="xxxxx[student]">
<label class="required" for="xxxxxV_student_0">Nie</label>
...
我的问题是我的输入标签不应该具有属性“required”因为我在实体中设置了nullable = true。
答案 0 :(得分:17)
解决方案是required => false
和empty_value => false
$builder
->add('student', 'choice', [
'label'=> false,
'expanded' => true,
'choices' => (Array)new StudentEnum(),
'required' => false,
'empty_value' => false
]);
答案 1 :(得分:4)
如上所述here,
required
type: Boolean default: true
required
选项默认值设置为true
,因此您应将其设置为false
。
builder->add('student', 'choice', array(
'label'=> false,
'expanded' => true,
'required' => false,
//...
))
;
此外,您可以阅读文档,
这是肤浅的,独立于验证。充其量,如果你让Symfony 猜你的字段类型,那么这个选项的值将从你的猜测中猜出来 验证信息。
然后,您需要设置一个验证规则,该规则考虑到您的字段不需要您的字段,以便让您的表单设置所需的正确值。
This可能有帮助。
答案 2 :(得分:0)
由于删除了Symfony 3.0 empty_value
,您需要使用placeholder
代替:
$builder
->add(
'student',
'choice',
[
'label'=> false,
'expanded' => true,
'choices' => (Array)new StudentEnum(),
'required' => false,
'placeholder' => null
]
);