Symfony2复选框选项字段:禁用一个复选框

时间:2012-09-28 14:58:50

标签: forms symfony

我有一项任务是禁用表单选项字段中的某些复选框,有些则不行。如果不重写选择字段布局,是否有一种简单的方法可以实现这一目标?

2 个答案:

答案 0 :(得分:3)

您可以在您的选择字段中设置禁用状态:

$builder->add('myChoice', 'choice', array('attr'=>array('disabled'=>'disabled')));

如果你有一些设置禁用状态所需的逻辑,你可以使用EventSubscriber来监听PostSetData事件。 检查cookbook dynamic form generation了解实施细节。

答案 1 :(得分:1)

我想澄清一些关于Flavien解决方案的内容,但我没有足够的声誉来评论他的帖子。

<击>

<击>
$builder->add('myChoice', 'choice', array('attr'=>array('disabled'=>'disabled')));

<击>

使用'disabled'=&gt;'禁用'是错误的(因为右边部分是错误的)。它工作但禁用(左)接受布尔值,应该接收true或false。在这种情况下,它确实有效,因为除了0之外的任何东西都是真的。

为什么我要解释这个?因为也许有人想在不同的地方使用相同的表格而只是禁用一个输入(实际上只能读取它)。所以他会将一个变量提供给'disabled'参数,如果该变量不是布尔值,它将始终导致禁用输入。

TL;博士

 $builder->add('myChoice', 'choice', array('attr'=>array('disabled'=>true)));

$builder->add('myChoice', 'choice', array('attr'=>array('disabled'=>false)));