Symfony带有禁用选项的选择类型
基于给定的choices
选项的真实性,Symfony是否可以使用禁用选项呈现<select>
表单类型?Symfony带有禁用选项的选择类型
我看到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.7版本以来,Symfony已经引入了一种方法来设置使用可调用的选择属性,这正是你所需要的。
这个代码是从官方的Symfony文档采取
$builder->add('attending', ChoiceType::class, array(
'choices' => array(
'Yes' => true,
'No' => false,
'Maybe' => null,
),
'choices_as_values' => true,
'choice_attr' => function($val, $key, $index) {
// adds a class like attending_yes, attending_no, etc
return ['class' => 'attending_'.strtolower($key)];
},
));
可以使用'choice_attr'
,并通过将据此决定是否增加disabled
属性或不依赖于价值,选择的关键或索引功能。
...
'choice_attr' => function($key, $val, $index) {
$disabled = false;
// set disabled to true based on the value, key or index of the choice...
return $disabled ? ['disabled' => 'disabled'] : [];
},
...
好,我看看,我目前正在测试SF3,我会回到这个项目:) –
根据表格布局:
和choice_widget_collapsed和choice_widget_options,我不认为这是可能直接与Symfony的默认选择形式。
你可以试试:
- 建立你自己的选择形式(通过扩展现有的并在其中添加参数选项列表,我认为这是最好的办法)
- 使用JavaScript/jQuery的修改在现有Symfony的选择加载时的选项参数从
嘿,非常感谢,显然ChoiceView不似乎允许选择一个选项... https://github.com/symfony/symfony/blob/2.7/src/Symfony/Component/Form/ChoiceList/View /ChoiceView.php 但是我甚至不知道如何扩展选择类型,如果所有的核心behing不允许我想做的事:/你知道吗? –
将它扩展为一个新的表单,允许您的表单保留新的额外参数,并创建一个新的布局,扩展现有的form_div_layout以覆盖“选项”块。请参见官方文档:[http://symfony.com/doc/current/cookbook/form/create_custom_field_type.html](http://symfony.com/doc/current/cookbook/form/create_custom_field_type.html)和[HTTP: //symfony.com/doc/current/cookbook/form/form_customization.html](http://symfony.com/doc/current/cookbook/form/form_customization.html) – Cedric
的可能重复[如何禁用形式选择特定类型的项目?(http://*.com/questions/14344639/how-to-disable-specific-item-in-form-choice-类型) – DonCallisto
绝对错过了这一个,谢谢!我会读它的权利知道,看看它是我寻找的解决方案:) –
最后不是重复。 ''''expanded''''选项会在''''checkboxes'''和''''''''''''元素之间创建一个完全不同的行为。 但是我害怕理解Symfony核心目前不允许这种操作。 –