php - 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'))
截屏:
那么,我有没有办法:
- 隐藏 Symfony 通过
MoneyType
字段添加的自动货币标签?不指定任何货币默认为欧元而不是美元,这没有帮助。 - 按照我想要的方式设置自动标签的样式?
注意:我没有使用 Symfony 的 Bootstrap 表单主题,因为我喜欢完全控制我的模板。MoneyType
字段默认显示货币的事实非常烦人。
解决方案
为自动标签设置样式:
输入前的美元符号来自 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 并设置您想要的模式。
推荐阅读
- android - 如何使所有活动(MainActivity除外)同时具有带有活动标题和后退按钮的ActionBar / Toolbar?
- javascript - 未处理的承诺拒绝 SyntaxError: Expected ':' get this on IE11 with vuejs+ vuetify project
- solr - 在 edismax 算法中如何计算太阳能中的分数?
- c# - SVN 进程在 Windows Server R2 上挂起
- angular - 未提供“渲染器”的参数
- scala - Akka HTTP client throws SSLHandshakeException and is unable to find valid certification path to requested target
- parquet - parquet 中一列 NULLS 的重量是多少?
- mongodb - Mongodb:如何根据当前月份生成所有日期
- php - Laravel 5.8 - 文件系统存储::url() 非常慢
- java - Spring Contracts:如何将字符串集合作为 RequestBody 发送