删除百分号字段类型上的百分号
Remove percent sign on a percent field type
我一直在谷歌搜索,但我找不到删除表单组件 (Symfony) 在呈现表单时添加到百分比字段类型的百分号的方法。我发现了一些与重新定义百分比小部件相关的内容,但我不明白它是如何工作的,也不知道在哪里可以改变它。
这是我发现的:
You can overwrite the percent_widget block from the default layout to
something like this:
{% 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 的输入组 class,我按照我喜欢的方式附加百分号,但是我如何删除附加 Symfony 的那个?
你不能删除它,它是 symfony 形式的缺点之一 % char 是硬编码的
{% block percent_widget -%}
{% set type = type|default('text') %}
{{- block('form_widget_simple') -}} %
{%- endblock percent_widget %}
您可以编写自己的块,您将在其中删除 %
您只需覆盖模板中的表单主题即可。有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>
您必须覆盖 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 中,而 twig 正在生成您喜欢的内容:
<div class="a">
<input ...>
%
</div>
'%' 文本可以使用原生 JS lastChild/removeChild 函数访问和删除:
$('.a').removeChild($('.a').lastChild)
(jQuery/JS 混合)
document.getElementsByClassname(a).removeChild(document.getElementsByClassname(a).lastChild)
(普通 JS)
我一直在谷歌搜索,但我找不到删除表单组件 (Symfony) 在呈现表单时添加到百分比字段类型的百分号的方法。我发现了一些与重新定义百分比小部件相关的内容,但我不明白它是如何工作的,也不知道在哪里可以改变它。
这是我发现的:
You can overwrite the percent_widget block from the default layout to something like this:
{% 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 的输入组 class,我按照我喜欢的方式附加百分号,但是我如何删除附加 Symfony 的那个?
你不能删除它,它是 symfony 形式的缺点之一 % char 是硬编码的
{% block percent_widget -%}
{% set type = type|default('text') %}
{{- block('form_widget_simple') -}} %
{%- endblock percent_widget %}
您可以编写自己的块,您将在其中删除 %
您只需覆盖模板中的表单主题即可。有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>
您必须覆盖 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 中,而 twig 正在生成您喜欢的内容:
<div class="a">
<input ...>
%
</div>
'%' 文本可以使用原生 JS lastChild/removeChild 函数访问和删除:
$('.a').removeChild($('.a').lastChild)
(jQuery/JS 混合)
document.getElementsByClassname(a).removeChild(document.getElementsByClassname(a).lastChild)
(普通 JS)