删除百分比字段类型上的百分号

时间:2015-01-06 11:39:39

标签: php symfony symfony-forms

我一直在谷歌上搜索,但我找不到删除表单组件(Symfony)在呈现表单时添加到百分比字段类型的百分号的方法。我发现了一些与重新定义百分比小部件有关的东西,但是我无法知道它是如何工作的,无论在哪里改变它。

这是我发现的:

  

您可以将percent_widget块从默认布局覆盖为   像这样的东西:

{% block percent_widget %}
    {% spaceless %}
        {% set type = type|default('text') %}
        {{ block('form_widget_simple') }}
    {% endspaceless %}
{% endblock percent_widget %}

模板中我当前的渲染代码是:

<div class="form-group">
    {{ form_label(edit_form.discountRate, 'Discount', {'label_attr':{'class':'col-sm-2 control-label'}}) }}
    <div class="col-sm-10">
        <div class="input-group">
            {{ form_widget(edit_form.discountRate, {'attr': {'class':'form-control'}}) }}
            <div class="input-group-addon">%</div>
        </div>                  
    </div>         
</div>

PD:使用boootstrap 3中的输入组类,我按照我喜欢的方式添加百分号,但我如何删除附加Symfony的那个?

4 个答案:

答案 0 :(得分:0)

你不能删除它,它的symfony形式%char的一个是硬编码的

{% block percent_widget -%}
    {% set type = type|default('text') %}
    {{- block('form_widget_simple') -}} %
{%- endblock percent_widget %}

您可以编写自己的块,您将删除%

答案 1 :(得分:0)

您只需覆盖模板中的表单主题即可。有several ways来做。

我将使用最快的。

您的模板最终会像这样:

{% form_theme edit_form _self %}

        {% block percent_widget %} 
            {% spaceless %} 
                {% set type = type|default('text') %} 
                {{ block('form_widget_simple') }} 
            {% endspaceless %} 
        {% endblock percent_widget %} 

<div class="form-group">
    {{ form_label(edit_form.discountRate, 'Discount', {'label_attr':{'class':'col-sm-2 control-label'}}) }}
    <div class="col-sm-10">
        <div class="input-group">
            {{ form_widget(edit_form.discountRate, {'attr': {'class':'form-control'}}) }}
            <div class="input-group-addon">%</div>
        </div>                  
    </div>         
</div>

答案 2 :(得分:0)

您必须覆盖symfony 2的默认表单主题。

首先,打开你的app / config / config.yml文件,并编辑twig配置,使其具有以下内容:

twig:
    debug:            "%kernel.debug%"
    strict_variables: "%kernel.debug%"
    form:
      resources:
      - YourBundleName:Form:my-form-theme.html.twig

form.resources部分很重要)。此配置将告诉Symfony 2使用您的自定义主题。

如果您不想在配置文件中添加内容,也可以在模板中使用{% form_theme form 'YourBundleName:Form:my-form-theme.html.twig' %},但我不想在所有表单中添加此行,所以我更喜欢在全局配置中添加它。

现在您必须使用以下内容创建文件src/YourBundlePath/Resources/views/Form/my-form-theme.html.twig

{% extends 'form_div_layout.html.twig' %}

{% block percent_widget -%}
    {% set type = type|default('text') %}
    {{- block('form_widget_simple') -}}
{%- endblock percent_widget %}

这应该有用。

如果您打开Symfony 2(/vendor/symfony/symfony/src/Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig)的主题文件,您可以看到:

{% block percent_widget -%}
    {% set type = type|default('text') %}
    {{- block('form_widget_simple') -}} %
{%- endblock percent_widget %}

我删除了&#34;%&#34;在覆盖的3d线上。

此致

答案 3 :(得分:0)

不需要重写模板,其想法是使用jQuery / JS进行前端删除。大多数情况下,您的输入嵌入到div中,而树枝会生成类似您的内容:

<div class="a"> <input ...> % </div>

可以使用本地JS lastChild / removeChild函数访问和删除

'%'文本:

$('.a').removeChild($('.a').lastChild)(jQuery / JS混合)

document.getElementsByClassname(a).removeChild(document.getElementsByClassname(a).lastChild)(普通香草JS)