Php 删除百分比字段类型上的百分比符号
我一直在谷歌上搜索,但我找不到方法删除表单组件(Symfony)在呈现表单时添加到百分比字段类型的百分比符号。我发现了一些与重新定义百分比小部件相关的东西,但我无法了解它是如何工作的,也无法知道在哪里更改它 这就是我发现的: 您可以将百分比窗口小部件块从默认布局覆盖到 大概是这样的:Php 删除百分比字段类型上的百分比符号,php,symfony,symfony-forms,Php,Symfony,Symfony Forms,我一直在谷歌上搜索,但我找不到方法删除表单组件(Symfony)在呈现表单时添加到百分比字段类型的百分比符号。我发现了一些与重新定义百分比小部件相关的东西,但我无法了解它是如何工作的,也无法知道在哪里更改它 这就是我发现的: 您可以将百分比窗口小部件块从默认布局覆盖到 大概是这样的: {% form_theme edit_form _self %} {% block percent_widget %} {% spaceless %}
{% 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>
模板中当前的渲染代码是:
<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>
{form_label(编辑_form.discountRate,'Discount',{'label_attr':{'class':'col-sm-2控件标签'}}}}
{{form_小部件(编辑{form.discentrate,{'attr':{'class':'form-control'}}}}}
%
PD:使用BootStrap 3中的输入组类,我以我喜欢的方式附加了这个百分号,但是我如何删除附加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>
{%form\u主题编辑\u form\u self%}
{%block percent_widget%}
{%spaceless%}
{%set type=type | default('text')%}
{{block('form_widget_simple')}
{%endspaceless%}
{%endblock%_widget%}
{form_label(编辑_form.discountRate,'Discount',{'label_attr':{'class':'col-sm-2控件标签'}}}}
{{form_小部件(编辑{form.discentrate,{'attr':{'class':'form-control'}}}}}
%
您必须覆盖symfony 2的默认表单主题
首先,打开app/config/config.yml文件,编辑细枝配置,使其具有如下内容:
twig:
debug: "%kernel.debug%"
strict_variables: "%kernel.debug%"
form:
resources:
- YourBundleName:Form:my-form-theme.html.twig
(重要的是form.resources
部分)。此配置将告诉Symfony 2使用自定义主题
如果您不想在配置文件中添加内容,但我不想在所有表单中添加这一行,所以我更喜欢在全局配置中添加它,那么您也可以在模板中使用{%form\u 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\u div\u layout.html.Twig
),您可以看到:
{% block percent_widget -%}
{% set type = type|default('text') %}
{{- block('form_widget_simple') -}} %
{%- endblock percent_widget %}
我删除了覆盖中3d线上的“%”
考虑到不需要重写模板,我们的想法是使用jQuery/JS进行前端删除。大多数情况下,您的输入都嵌入到div中,而twig生成的内容如下所示:
twig:
debug: "%kernel.debug%"
strict_variables: "%kernel.debug%"
form:
resources:
- YourBundleName:Form:my-form-theme.html.twig
%
可以使用本机JS lastChild/removeChild函数访问和删除“%”文本:
$('.a').removeChild($('.a').lastChild)
(jQuery/jsmix)
document.getElementsByClassname(a).removeChild(document.getElementsByClassname(a).lastChild)
(纯香草JS)您能给我们看看表单的html输出吗?根据我的理解,字段类型百分比呈现文本输入,也许您的浏览器会添加%sign?Ofc。您可以,表单主题覆盖是Symfony 2的一个基本功能。