Symfony Twig覆盖特定的表格行

时间:2014-12-03 23:27:05

标签: php forms symfony twig

我有一个表单twig模板,我想用原始过滤器解析特定字段帮助文本(它包含html)。该字段以称为Clinic

的形式称为邮政编码

根据这里http://symfony.com/doc/current/cookbook/form/form_customization.html#how-to-customize-an-individual-field

表单模板:

{% extends 'AgriHealthAhpBundle::admin.html.twig' %}
{% form_theme form 'AgriHealthAhpBundle:Form:fields.html.twig' %}

{% block _clinic_postcode_row %}
        <div class="row">
            test<div class="small-12 medium-3 columns label">{{ form_label(form) }}</div>
            <div class="small-12 medium-6 columns widget">
                {{ form_widget(form) }}
                <div class="error">
                    {{ form_errors(form) }}
                </div>
            </div>
            <div class="small-12 medium-3 columns help">
                {% if help is defined %}
                    {{ help|raw }}
                {% endif %}
            </div>
        </div>
{% endblock %}

{% block admin -%}
    <h1>New Clinic</h1>

    {{ form(form) }}

    <div class="row form_actions">
        <div class="small-12 medium-offset-3 medium-2 columns submit">
            <button type="submit" id="agrihealth_ahpbundle_clinic_submit_visible" name="agrihealth_ahpbundle_clinic[submit]">Create</button>
        </div>
        <script type="text/javascript">
            jQuery(document).ready(function() {
                jQuery('#agrihealth_ahpbundle_clinic_submit_visible').click(function(){
                    jQuery('form[name="agrihealth_ahpbundle_clinic"]').submit();
                });
            });
        </script>
        <div class="small-12 medium-2 columns cancel">
            <a href="{{ path('clinic') }}">
                Cancel
            </a>
        </div>
        <div class="small-12 medium-2 end columns cancel">
            <a href="{{ path('clinic') }}">
                Back to List
            </a>
        </div>
    </div>
{% endblock %}

AhpBundle /资源/视图/窗体/ fields.html.twig

{% block form_row %}
    {% spaceless %}
    <div class="row">
        <div class="small-12 medium-3 columns label">{{ form_label(form) }}</div>
        <div class="small-12 medium-6 columns widget">
            {{ form_widget(form) }}
            <div class="error">
                {{ form_errors(form) }}
            </div>
        </div>
        <div class="small-12 medium-3 columns help">
            {% if help is defined %}
                {{ help }}
            {% endif %}
        </div>
    </div>
    {% endspaceless %}
{% endblock form_row %}

任何人都可以看到我忽略了什么,我试过了

{% block _clinic_postcode_row %}

{% block _Clinic_postcode_row %}

解决方案

根据接受的答案,表格行块需要用速记包名称完全识别。最简单的方法是查看表单的源代码并识别每个输入字段中使用的文本和表单名称=“”:

enter image description here

1 个答案:

答案 0 :(得分:5)

替换

{% form_theme form 'AgriHealthAhpBundle:Form:fields.html.twig' %}

{% form_theme form with ['AgriHealthAhpBundle:Form:fields.html.twig', _self] %}

由于您正在装饰动作模板中的行,因此在应用单独的表单模板时,您需要指定多个模板

您还需要为行块指定一个完全限定的路径名​​,例如

{% block _agrihealth_ahpbundle_clinic_postcode_row %}