Symfony是否有办法根据给定的choices
选项的真实性来呈现具有禁用选项的<select>
表单类型?
我看到this thread(感谢DonCallisto)关于禁用选择扩展选项;但是我不想有一个扩展的选择。我想保留一个select
元素,禁用options
。
$builder->add('list', 'choice', array(
'choices' => array(
array(
'value' => 1,
'label' => '1',
'disabled' => false
),
array(
'value' => 2,
'label' => '2',
'disabled' => false
),
array(
'value' => 3,
'label' => '3',
'disabled' => true
)
),
// Instead of
// 'choices' => array(
// 1 => 'Option 1',
// 2 => 'Option 2',
// 3 => 'Option 3'
// )
);
# Which would render to the following element
<select [...]>
<option value='1'>1</value>
<option value='2'>2</value>
<option value='3' disabled='disabled'>3</value>
</select>
我就是找不到方法...有必要构建自己的字段类型吗?
2条答案
按热度按时间z0qdvdin1#
从2.7版本开始,Symfony引入了一种使用可调用对象设置选择属性的方法,这正是您所需要的。
此代码取自Symfony官方文档
您可以使用
'choice_attr'
并传递一个函数,该函数将根据所选的值、键或索引来决定是否添加disabled
属性。2mbi3lxu2#
根据表单布局:
https://github.com/symfony/symfony/blob/2.7/src/Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig
以及choice_widget_collapsed和choice_widget_options,我认为直接使用Symfony的默认选择表单是不可能的。
您可以尝试: