Forms Symfony:选择属性数组不显示单选按钮

Forms Symfony:选择属性数组不显示单选按钮,forms,symfony,Forms,Symfony,我一直在尝试将HTML属性添加到单选按钮中,但不知何故它不起作用。我正在使用内置的choice\u attr选项。在这种情况下,我不想使用可调用的,因为choice\u attr的定义指出,该值可以是可调用的、字符串或数组。我想使用数组。下面是代码,我做错了什么 ->add('plan', ChoiceType::class, array( 'choices' => array( 'Basic' => 0,

我一直在尝试将HTML属性添加到单选按钮中,但不知何故它不起作用。我正在使用内置的
choice\u attr
选项。在这种情况下,我不想使用可调用的,因为
choice\u attr
的定义指出,该值可以是可调用的、字符串或数组。我想使用数组。下面是代码,我做错了什么

    ->add('plan', ChoiceType::class, array(
        'choices' => array(
            'Basic' => 0,
            'Superb (+ €9)' => 1,
            'Super (+ €18)' => 2,
            'Rrah' => 3
        ),
        'expanded' => true,
        'data' => 0,
        'choice_attr' => [
            1 => ['data-price' => '0'],
            2 => ['data-price' => '9'],
            3 => ['data-price' => '18'],
            4 => ['data-price' => '0']
        ])
    )

choice_attr用于HTML属性Blupfisk。 请参阅文档:

choice_attr函数的参数必须是$val、$key、$index中的一个,它表示您使用的“choices”数组的值、键和索引。所以你可以试试:

'choice_attr' => function($val) {
    $price = 0;
    if ($val == 1) {
        $price = 9;
    }
    elseif ($val == 2) {
        $price = 18;
    }
    return ['data-price' => $price];
}

但是data-*是一个有效的html属性。它适用于另一种情况,在这种情况下,我使用callable来分配数据的缺货属性。但在这种情况下,如果不需要调用,它似乎不起作用。所以这是可行的,但为什么普通数组不起作用呢。因为如果你能简单地传递一些数据,那么编写需要处理的代码就毫无意义了choice_attr'=>函数($plan){$price=0;if($plan==1){$price=9;}elseif($plan==2){$price=18;}返回['data-price'=>$price];})你好,谢谢。然而,这是我在上面的评论中已经做过的。文档中说,
choice\u attr
值可以是数组、可调用或字符串。那么,为什么在原始示例中我的数组不起作用呢?不,文档清楚地说明了属性数组:“如果每个选择的属性相同”。上面的示例还显示了一个变量
$plan
,该变量不是函数的工作方式。。。您应该使用
$val
,它是值。请确保您再次阅读文档,这需要一段时间才能理解。好的方面,我不知何故错过了这一部分,尽管它只占用了两句话。如果你删除答案的第一部分,我可以将其标记为有效。