php - Symfony2 : collection form field type with data-prototype

标签 php symfony

我有一个团队,我想向其中添加球员(球员的对象)。我已经正确设置了表单“类型”类。这是我观点的相关部分:

{% for index, player in form.players %}
    <div id="template" data-prototype="{{ form_widget(form.players.get('prototype')) | e }}">
        <span class="title">{{ index }}</span>
        {{ form_row(player.name) }}
    </div>
{% endfor %}

我的问题是 data-prototype 属性不包含 span 标签;它只包含 {{ form_row(player.name) }} 的输出。有没有办法将 div#template 的全部内容包含在 data-prototype 属性中?

最佳答案

这也困扰着我。我定制了一个字段类型,甚至制作了带有简化字段集的简单表单类型(用于更复杂的对象),但感觉不对。我想出了一个应该可以解决问题的解决方案:)

首先 - 我认为你的 <div id="team" data-prototype="...">应该在你的循环之外。

接下来,您的原型(prototype)只是一个表单 View 对象,因此如果您将它传递给模板,您可以手动呈现字段并自定义输出。注意:自动转义对包含的内容没有影响,因此请使用“过滤器转义”。

<div id="playerFields" data-prototype="{% filter escape %}{% include 'AcmeTeamBundle:Team:prototypePlayer.html.twig' with {'form': form.players.get('prototype')} %}{% endfilter %}">

然后在您的 prototypePlayer.html.twig 中,像通常在表单 View 中一样呈现每个字段。

<div>
    <span class="title">{{ form_label(form.name) }}</span>
    {{ form_row(form.name) }}
    <span class="age">{{ form_label(form.age) }}</span>
    {{ form_row(form.age) }}
    {# render whatever else you like from your Form/PlayerType class... #}
<div>

我的模板具有与您的问题不同的数据结构,但它应该有所帮助:)

干杯,

克里斯


弃用警告:

自 Symfony 2.1 起,.get()已弃用,以上内容将不起作用。替换 form.players.get('prototype')form.players.vars.prototype在更高版本的 Symfony 中修复此问题。

关于php - Symfony2 : collection form field type with data-prototype,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8488831/

相关文章:

php - 如何使用 Doctrine Criteria 过滤掉数组属性?

symfony - 是否有任何使用facebook/twitter/google +进行身份验证的symfony bundle ?

javascript - 在 javascript 中检索 parameters.yml

php - 每个 Behat 上下文的不同环境 (Symfony 4.x)

php - 使用对象运算符循环

PHP MYSQL问题

php - 使用PHP显示curl结果

php - 如何在 Laravel 4 中创建自定义 Facade

php - JOIN 工作时出现问题

php - 无法为 symfony 安装 php-xml