2015-01-06 103 views
0

我一直在使用Google搜索,但無法找到方法來刪除表單組件(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的那個?

+0

你能告訴我們表單的html輸出嗎?從我的理解字段類型**百分比**呈現文本輸入,也許您的瀏覽器添加%符號? –

回答

0

你必須重載symfony的默認形式的主題2.

首先,打開您的應用程序/配置/ config.yml文件,編輯樹枝配置是這樣的:

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線。

Regards

0

你不能刪除它,symfony的形式%焦炭的利弊它的一個是硬編碼

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

您可以編寫自己的塊,在那裏你會刪除%

+0

Ofc你可以,形式主題覆蓋是Symfony 2的一個基本特徵。 –

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>