从一个地方的自定义表单字段中渲染资产

时间:2016-03-23 09:55:30

标签: symfony assets

我有小问题。我创建了许多自定义表单字段,每个字段添加必要的css / js文件。

在此示例中,我将此字段命名为" testType"。

我在formTheme中添加它:

{% stylesheets
            'plugins/test.min.css'filter='cssrewrite' output='compiled/css/test.css' %}
            <link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
<input id="{{ id }}" {{ block('widget_attributes') }} type="{{ type }}" value="{{ value is not empty ? value : '' }}">

一切正常,但如果我将多次使用同一领域。它们将被添加多次。

如何编写一些额外的插件,只在form_start或form_end中添加一次和唯一的css / js文件?

1 个答案:

答案 0 :(得分:1)

您需要覆盖form_start block

{% block form_start %}
{% spaceless %}
    {% set method = method|upper %}
    {% if method in ["GET", "POST"] %}
        {% set form_method = method %}
    {% else %}
        {% set form_method = "POST" %}
    {% endif %}

    {% stylesheets
        'plugins/test.min.css'filter='cssrewrite' output='compiled/css/test.css' %}
        <link rel="stylesheet" href="{{ asset_url }}" />
    {% endstylesheets %}

    <form method="{{ form_method|lower }}" class="form-horizontal" 
         action="{{ action }}"{% for attrname, attrvalue in attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}{% if multipart %} enctype="multipart/form-data"{% endif %}>
    {% if form_method != method %}
        <input type="hidden" name="_method" value="{{ method }}" />
    {% endif %}
{% endspaceless %}
{% endblock form_start %}

在此处详细了解表单自定义:http://symfony.com/doc/current/cookbook/form/form_customization.html