自定义Symfony 2嵌入式表单原型

时间:2017-07-23 18:54:19

标签: forms symfony

我正在尝试在我的小项目中自定义嵌入式表单原型。我已经阅读了symfony.com关于如何做到这一点的简短描述,但此时我只有50%的成功。在symfony文档中描述的小部件定义之后,现有记录上的单行使用我的模板正确呈现。但原型仍然是默认的。

这是小部件定义:

{% form_theme form _self %}

{% block _refuel_form_fuels_entry_row %}
    {% spaceless %}
        <table class="form-table compact">
            <tbody>
            <tr>
                <th>{{ form_label(form.fuel) }}</th>
                <td>
                    {{ form_errors(form.fuel) }}
                    {{ form_widget(form.fuel) }}
                </td>
                <th>{{ form_label(form.currencyRatio) }}</th>
                <td>
                    {{ form_errors(form.currencyRatio) }}
                    {{ form_widget(form.currencyRatio) }}
                </td>
            </tr>
            ... other rows ...
            </tbody>
        </table>
    {% endspaceless %}
{% endblock %}

使用此代码,我将渲染现有记录的行(编辑表单):

<tr>
    <th>{{ form_label(form.fuels) }}</th>
    <td colspan="3">
        <ul class="fuels collection-holder" data-prototype="{{ form_widget(form.fuels.vars.prototype)|e('html_attr') }}">
            {% for fuel in form.fuels %}
                <li>
                    {{ form_row(fuel) }}
                </li>
            {% endfor %}
        </ul>
    </td>
</tr>

所以,symfony知道我想为每个子表单使用自定义模板,但为什么它还没有用它来生成原型?我是否必须以某种方式启用该小部件才能使用原型?文档中没有此类信息。

1 个答案:

答案 0 :(得分:0)

没关系,只是在发布问题后意识到问题在哪里。我的模板&#34;覆盖&#34; _row块对应于for循环中使用的form_row函数。但是在原型属性中,我从使用form_widget函数的文档中复制了代码...看到问题了?对。将属性更改为:data-prototype="{{ form_row(form.fuels.vars.prototype)|e('html_attr') }}"并繁荣!原型生成正确。愚蠢的我......