#php #symfony #bootstrap-4
#php #симфония #bootstrap-4
Вопрос:
У меня возникли некоторые трудности с оформлением MoneyType
формы ввода так, как я хочу. Я хочу использовать input-group-addon
класс Bootstrap для добавления знака доллара к полю, но на самом деле происходит то, что отображаются два знака доллара … один автоматически генерируется MoneyType
, а другой я вручную написал в своем шаблоне:
Шаблон:
<div class="form-group">
{{ form_label(form.canonicalPrice) }}
{{ form_errors(form.canonicalPrice) }}
<div class="input-group">
<span class="input-group-addon">
lt;/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, потому что мне нравится иметь полный контроль над своими шаблонами. Тот факт, что MoneyType
в полях по умолчанию отображается валюта, очень раздражает.
Комментарии:
1. Вы должны иметь возможность расширять MoneyType и переопределять то, что вы хотите там.
Ответ №1:
Создайте автоматическую метку :
Знак доллара, который добавляется к входным данным, взят из атрибута money_pattern MoneyType, поэтому, как указано в документе MoneyType, вы можете :
Измените в нем представление :
{{ form_row(form.value, { 'money_pattern': '{{ widget }}
или вот так
{% block money_widget %}
{%- set type = type|default('number') -%}
{{ parent() }}
{% endblock %}
Измените его в сборщике :
Используйте money_pattern в FormType и задайте нужный шаблон.
или вот так
}) }}
Измените его в сборщике :
Используйте money_pattern в FormType и задайте нужный шаблон.