Symfony 2表单字段收音机需要=假?
Posted
技术标签:
【中文标题】Symfony 2表单字段收音机需要=假?【英文标题】:Symfony 2 form field radio required=false? 【发布时间】:2013-11-14 23:21:54 【问题描述】:这是我的实体类的一部分:
/**
* @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>
...
我的问题是我的输入标签不应该有属性“必需”,因为我在实体中设置了 nullable=true。
【问题讨论】:
【参考方案1】:解决方案是required => false
和empty_value => false
$builder
->add('student', 'choice', [
'label'=> false,
'expanded' => true,
'choices' => (Array)new StudentEnum(),
'required' => false,
'empty_value' => false
]);
【讨论】:
这个解决方案在 Symfony 2.8 之前是好的,那么你必须使用 "placeholder" 选项,因为 "empty_value" 在 2.7 中已被弃用(并在 3.0 中被删除)【参考方案2】:如here所述,
required
type: Boolean default: true
required
选项默认值设置为true
,因此您应该将其设置为false
。
builder->add('student', 'choice', array(
'label'=> false,
'expanded' => true,
'required' => false,
//...
))
;
此外,您可以从文档中了解到,
这是肤浅的,独立于验证。充其量,如果你让 Symfony 猜你的字段类型,那么这个选项的值将从你的 验证信息。
然后,您需要设置一个验证规则,考虑到您的字段不应该是必需的事实,以便让您的表单设置正确的 required 值。
This 可能会有所帮助。
【讨论】:
我之前试过这个,这个在顶部添加了额外的收音机,我不想要那个。 我已设置 * @Assert\Choice(choices = 4,3,2,1, null) 但没有任何改变。 OK 我找到了解决方案 'required' => false, 'empty_value' => false @user2156980 不客气。很高兴知道 empty_value 也应该设置为 false。【参考方案3】:由于 Symfony 3.0 empty_value
已被删除,您需要改用 placeholder
:
$builder
->add(
'student',
'choice',
[
'label'=> false,
'expanded' => true,
'choices' => (Array)new StudentEnum(),
'required' => false,
'placeholder' => null
]
);
【讨论】:
以上是关于Symfony 2表单字段收音机需要=假?的主要内容,如果未能解决你的问题,请参考以下文章
直接访问登录表单时未设置会话 cookie,导致 CSRF 令牌无效