【问题标题】:Adding `v-model` to Symfony `ChoiceType` radio buttons将 `v-model` 添加到 Symfony `ChoiceType` 单选按钮
【发布时间】:2021-12-08 16:15:18
【问题描述】:

将 Vue.js v-model 添加到 Symfony 单选按钮(即 ChoiceType'expanded' => true, 'multiple' => false)的最简单方法是什么? Vue.js 在 每个 <input type="radio"> 上都需要 v-model,请参阅 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() 一次性获取它们?

attrrow_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">

【问题讨论】:

标签: php vue.js symfony


【解决方案1】:

解决方法是choice_attr,但是由于需要传递回调函数,所以在Twig中不能这样做,而是在你的FormType中:

$builder->add('foo', ChoiceType::class, ['expanded' => true, 'multiple' => false,
    choice_attr' => function($choice, $key, $value): array {
        return ['v-model' => 'foo'];
    },
]);

【讨论】:

    猜你喜欢
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-31
    • 2020-09-13
    • 2013-08-09
    • 1970-01-01
    • 2012-05-20
    相关资源
    最近更新 更多