我有一项任务是禁用表单选项字段中的某些复选框,有些则不行。如果不重写选择字段布局,是否有一种简单的方法可以实现这一目标?
答案 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)));