我有个任务做一些禁用的形式选择字段的复选框,有的不是。 有一个简单的方法来实现,如果不重写选择栏布局?
Answer 1:
您可以在选择领域的禁用状态设置:
$builder->add('myChoice', 'choice', array('attr'=>array('disabled'=>'disabled')));
或者你可以使用一个EventSubscriber听上PostSetData事件,如果你必须设置禁用状态需要一些逻辑。 检查食谱动态表单生成的实施细节。
Answer 2:
我想澄清一些关于Flavien的解决方案,但我没有足够的声誉在他的信息发表评论。
$builder->add('myChoice', 'choice', array('attr'=>array('disabled'=>'disabled')));
使用“禁用” =>“禁用”的是错误的(因为右边部分是错误的)。 它的工作原理,但被禁用(左)接受布尔和应该得到真或假。 在这种情况下,它确实有效,因为简单的东西,但0是真实的。
为什么我解释吗? 因为也许有人想用同样的形式在不同的地方,只是禁用一个输入(实际上使得它只读)。 于是,他将饲料变量来“禁用”参数,而且如果变量没有布尔它将总是导致不能输入。
TL;博士
$builder->add('myChoice', 'choice', array('attr'=>array('disabled'=>true)));
要么
$builder->add('myChoice', 'choice', array('attr'=>array('disabled'=>false)));
文章来源: Symfony2 checkbox choice field: disable one checkbox