gpt4 book ai didi

forms - 带有禁用选项的 Symfony Choice 类型

转载 作者:行者123 更新时间:2023-12-04 09:14:10 26 4
gpt4 key购买 nike

Symfony 有什么方法可以渲染 <select>带有禁用选项的表单类型,基于给定 choices 的真实性选项?

我看到了 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 documentation

$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'] : [];
},
...

关于forms - 带有禁用选项的 Symfony Choice 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31535943/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com