我正在尝试在我的小项目中自定义嵌入式表单原型。我已经阅读了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知道我想为每个子表单使用自定义模板,但为什么它还没有用它来生成原型?我是否必须以某种方式启用该小部件才能使用原型?文档中没有此类信息。
答案 0 :(得分:0)
没关系,只是在发布问题后意识到问题在哪里。我的模板&#34;覆盖&#34; _row
块对应于for循环中使用的form_row
函数。但是在原型属性中,我从使用form_widget
函数的文档中复制了代码...看到问题了?对。将属性更改为:data-prototype="{{ form_row(form.fuels.vars.prototype)|e('html_attr') }}"
并繁荣!原型生成正确。愚蠢的我......