我在嵌入式控制器操作中生成表单。现在我遇到了以下问题。表格主题在这种情况下不起作用。
所以我拥有:
tempalte" page.html.twig"
{% block content %}
{% render 'MyBundle:Widget:index' %}
{% endblock %}
indexAction()创建表单并呈现另一个模板" form.html.twig"通常使用form_row,form_rest等呈现表单。
所以,现在我正在尝试自定义表单主题,这是我的问题。 当我把代码
{% form_theme form _self %}
page.html.twig中的,我得到一个错误,表单变量不存在。正确的是,form var稍后在嵌入式控制器中创建。 但是当我将主题代码放在嵌入式模板" form.html.twig"时,我又得到了另一个错误"变量"复合"不存在"
{% block form_label %}
{% spaceless %}
{% if not compound %}
{% set label_attr = label_attr|merge({'for': id}) %}
{% endif %}
{% if required %}
{% set label_attr = label_attr|merge({'class': (label_attr.class|default('') ~ ' required')|trim}) %}
{% endif %}
{% if label is empty %}
{% set label = name|humanize %}
{% endif %}
<label{% for attrname, attrvalue in label_attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %} {% if attr.tooltip is defined %}title="{{ attr.tooltip }}"{% endif %}>{{ label|trans({}, translation_domain) }}{% if required %}<span>*</span>{% endif %}</label>
{% endspaceless %}
{% endblock form_label %}
复制而来的
所以试过别人做这样的事情?
答案 0 :(得分:3)
自己回答我的问题。
这是Symfony2 docs http://symfony.com/doc/current/book/forms.html
中的一个小句子此{%form_theme表单_self%}功能仅在您的模板扩展另一个时才有效。如果您的模板没有,则必须将form_theme指向单独的模板。
因此有两种解决方案可以解决这个问题:
将表单主题代码移动到单独的文件中,并使用
将其包含在嵌入式模板中{% form_theme form with 'fields.html.twig' %}
将表单主题代码保留在生成表单的同一模板中,但是从某个“form.html.twig
”空模板扩展模板。
我只完成了第二种方式及其工作,但我确信第一种方式也能正常工作。