首页 > 解决方案 > Symfony 3.4、MoneyType 和 Bootstrap

问题描述

我在MoneyType以我想要的方式设计表单输入时遇到了一些困难。我想使用 Bootstrap 的input-group-addon类在字段前添加一个美元符号,但实际发生的是正在呈现两个MoneyType美元符号......一个由 自动生成,一个是我在模板中手动编写的:

模板:

<div class="form-group">
    {{ form_label(form.canonicalPrice) }}
    {{ form_errors(form.canonicalPrice) }}
    <div class="input-group">
        <span class="input-group-addon">$</span>
        {{ form_widget(form.canonicalPrice, { 'attr': {'id': 'price', 'class': 'form-control'} }) }}
    </div>
</div>

MoneyType我的表单类型类中的定义:

->add('canonicalPrice', MoneyType::class, array('label' => 'Price', 'currency' => 'USD'))

截屏:

在此处输入图像描述

那么,我有没有办法:

  1. 隐藏 Symfony 通过MoneyType字段添加的自动货币标签?不指定任何货币默认为欧元而不是美元,这没有帮助。
  2. 按照我想要的方式设置自动标签的样式?

注意:我没有使用 Symfony 的 Bootstrap 表单主题,因为我喜欢完全控制我的模板。MoneyType字段默认显示货币的事实非常烦人。

标签: phpsymfonybootstrap-4

解决方案


为自动标签设置样式:

输入前的美元符号来自 MoneyType 的 money_pattern 属性所以 正如MoneyType上的文档所说,您可以:

在其中修改视图

{{ form_row(form.value, { 'money_pattern': '{{ widget }} $' }) }}

或者像这样

{% block money_widget %}
    {%- set type = type|default('number') -%}
    {{ parent() }}
{% endblock %}

在 builder 中修改它

在 FormType 中使用 money_pattern 并设置您想要的模式。


推荐阅读