Symfony Twig覆盖特定的表格行

jdo*_*dog 6 php forms symfony twig

我有一个表单twig模板,我想用原始过滤器解析特定字段帮助文本(它包含html).该字段称为Clinic,形式为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 %}
Run Code Online (Sandbox Code Playgroud)

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 %}
Run Code Online (Sandbox Code Playgroud)

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

{% block _clinic_postcode_row %}
Run Code Online (Sandbox Code Playgroud)

{% block _Clinic_postcode_row %}
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

b.b*_*4rd 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 %}
Run Code Online (Sandbox Code Playgroud)

  • 是的,我认为识别块名称可能对其他人有用 (2认同)