#sonata-admin
#sonata-администратор
Вопрос:
(Добавить currency
поле в виде списка довольно просто
protected function configureShowFields(ShowMapper $showMapper)
{
$showMapper
->add('price', 'currency', [
'currency' => 'EUR',
'locale' => 'fr',
])
;
}
Но что, если моя строка валюты (EUR, USD, …) исходит из самих данных (иначе говоря, не как во фрагменте, а из поля из таблицы DB)?
могу ли я каким-либо образом ввести currency
строку?
Комментарии:
1. Смотрите это: sonata-project.org/bundles/intl/master/doc/reference /…
Ответ №1:
Вы можете установить пользовательский шаблон для своего элемента, а затем получить доступ к своему объекту в нем.
protected function configureShowFields(ShowMapper $showMapper)
{
$showMapper
->add('price', 'currency', [
'currency' => 'EUR',
'locale' => 'fr',
'template' => '@AdminTemplates/sonata/show_currency.html.twig',
])
;
}
{# @AdminTemplates/sonata/show_currency.html.twig #}
{% extends '@SonataAdmin/CRUD/base_show_field.html.twig' %}
{%- block field -%}
{% spaceless %}
{%- if value is null -%}
amp;nbsp;
{%- else -%}
{{ value|localizedcurrency(object.currencyField) }}
{%- endif -%}
{% endspaceless %}
{%- endblock field -%}
В этом примере я использую localizedcurrency
из расширения Twig Intl
Если вы используете SonataIntlBundle, ваш шаблон может расширять show_currency.html.twig, и, возможно, вы смогли бы переопределить currency
параметр поля.
Надеюсь, это поможет
Ответ №2:
решение @Picoss работает с Symfony 6.1 и Sonata Admin 4.18, используя этот show_currency.html.twig
шаблон:
{% extends '@SonataAdmin/CRUD/base_list_field.html.twig' %}
{%- block field -%}
{%- if value is null -%}
amp;nbsp;
{%- else -%}
{{ value|format_currency(field_description.option('currency')) }}
{%- endif -%}
{%- endblock field -%}