【发布时间】:2015-11-05 16:35:39
【问题描述】:
我已阅读 Symfony 2 文档,并且正在尝试制作自定义嵌入表单,但我无法理解文档中提供的代码。 官方文档: http://symfony.com/doc/current/cookbook/form/form_customization.html
具体我看不懂的代码是这样的:
{% form_theme form _self %}
{% block _tasks_entry_widget %}
<tr>
<td>{{ form_widget(task.task) }}</td>
<td>{{ form_widget(task.dueDate) }}</td>
</tr>
{% endblock %}
经过多次测试,我注意到“_task_entry”是嵌入表单的名称(不是主表单中的字段名称)
现在我正在尝试获取“任务”变量{{ form_widget(task.dueDate) }}
我再次尝试使用嵌入的表单名称、实体字段的名称以及主表单变量的名称,但没有任何效果:
{% form_theme edit_form.lineas _self %}
{% block zb_gestionbundle_lineaalbaran_widget %}
<div class="large-1 small-1 columns">
{{ form_widget(form.cantidad) }}
</div>
<div class="large-8 small-8 columns">
{{ form_widget(form.concepto) }}
</div>
<div class="large-2 small-2 columns">
{{ form_widget(form.precio) }}
</div>
{% endblock %}
{{ form_label(edit_form.lineas) }}
{{ form_errors(edit_form.lineas) }}
{{ form_widget(edit_form.lineas) }}
总之,我需要在{{ form_widget(form.cantidad) }} 中输入什么才能使代码正常工作?
Tyvm!!
一种可能的解决方案:
经过进一步调查,我发现这段代码有效!
{% form_theme edit_form _self %}
{% macro prototype(linea) %}
<div class="large-1 small-1 columns">
{{ form_widget(linea.cantidad) }}
</div>
<div class="large-8 small-8 columns">
{{ form_widget(linea.concepto) }}
</div>
<div class="large-2 small-2 columns">
{{ form_widget(linea.precio) }}
</div>
{% endmacro %}
{% for linea in edit_form.lineas %}
{{_self.prototype(linea)}}
{% endfor %}
我不知道文档是否有误,对于文档的疑问,我保留答案。
【问题讨论】:
标签: php forms symfony prototype