我一直在谷歌上搜索,但我找不到删除表单组件(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 :(得分:0)
你不能删除它,它的symfony形式%char的一个是硬编码的
{% block percent_widget -%}
{% set type = type|default('text') %}
{{- block('form_widget_simple') -}} %
{%- endblock percent_widget %}
您可以编写自己的块,您将删除%
答案 1 :(得分: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>
答案 2 :(得分:0)
您必须覆盖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 %}
我删除了&#34;%&#34;在覆盖的3d线上。
此致
答案 3 :(得分:0)
不需要重写模板,其想法是使用jQuery / JS进行前端删除。大多数情况下,您的输入嵌入到div中,而树枝会生成类似您的内容:
<div class="a">
<input ...>
%
</div>
'%'文本:
$('.a').removeChild($('.a').lastChild)
(jQuery / JS混合)
document.getElementsByClassname(a).removeChild(document.getElementsByClassname(a).lastChild)
(普通香草JS)