Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 删除百分比字段类型上的百分比符号_Php_Symfony_Symfony Forms - Fatal编程技术网

Php 删除百分比字段类型上的百分比符号

Php 删除百分比字段类型上的百分比符号,php,symfony,symfony-forms,Php,Symfony,Symfony Forms,我一直在谷歌上搜索,但我找不到方法删除表单组件(Symfony)在呈现表单时添加到百分比字段类型的百分比符号。我发现了一些与重新定义百分比小部件相关的东西,但我无法了解它是如何工作的,也无法知道在哪里更改它 这就是我发现的: 您可以将百分比窗口小部件块从默认布局覆盖到 大概是这样的: {% form_theme edit_form _self %} {% block percent_widget %} {% spaceless %}

我一直在谷歌上搜索,但我找不到方法删除表单组件(Symfony)在呈现表单时添加到百分比字段类型的百分比符号。我发现了一些与重新定义百分比小部件相关的东西,但我无法了解它是如何工作的,也无法知道在哪里更改它

这就是我发现的:

您可以将百分比窗口小部件块从默认布局覆盖到 大概是这样的:

{% 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的一个基本功能。