将ve .jsv-model
添加到Symfony单选按钮(即ChoiceType with'expanded' => true, 'multiple' => false
)的最简单方法是什么?Vue.js期望v-model
在上每个<input type="radio">
,参见https://v3.vuejs.org/guide/forms.html#radio
我的解决方案/解决方法是在Twig中使用form_widget()
渲染每个单选按钮:
{% for foo in form.foo %}
{{ form_widget(foo, {'attr': {'v-model':'foo'}} ) }}
{% endfor %}
但是是否有一种方法可以让form_row()
一次获得它们?
attr
或row_attr
不工作:
{{ form_row(form.foo, {'attr': {'v-model':'foo'}} ) }}
{# or #}
{{ form_row(form.foo, {'row_attr': {'v-model':'foo'}} ) }}
都导致v-model
被添加到容器:
<div v-model="foo">
解决方案是choice_attr
,但由于您需要传递回调函数,您不能在Twig中这样做,但在您的FormType
:
$builder->add('foo', ChoiceType::class, ['expanded' => true, 'multiple' => false,
choice_attr' => function($choice, $key, $value): array {
return ['v-model' => 'foo'];
},
]);