[英]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.