簡體   English   中英

刪除百分比字段類型上的百分號

[英]Remove percent sign on a percent field type

我一直在谷歌搜索,但是我找不到方法來刪除呈現表單時表單組件(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中的input-group類,我以喜歡的方式添加該百分號,但是如何刪除附加Symfony的百分號?

您無法刪除它,它的symfony形式%char的缺點之一是硬編碼的

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

您可以編寫自己的代碼塊,然后在其中刪除%

您只需要覆蓋模板中的表單主題。 幾種方法可以做到這一點。

我將使用最快的。

您的模板最終將像這樣:

{% 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>

您必須覆蓋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 %}

我在覆蓋的3d行中刪除了“%”。

問候

好吧,無需重寫模板,其想法是使用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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM