Easy Admin - Отображение полного названия страны в действии Show

У меня есть объект Address, для которого требуется страна. В связанной форме я использую Symfony CountryType, который отображает удобный для пользователя выбор стран и сохраняет его аббревиатуру в сущности (например, DE для Германии или CH для Швейцарии).

Чтобы отобразить страну адреса в действии show на панели администратора, я использую следующую строку в easy_admin.yaml:

- { property: country, label: 'address.entity.country' }

Проблема:

Это отображает только аббревиатуру, а не фактическое название страны. Как я могу это изменить?

Страна в адресном объекте:

/**
 * @ORM\Column(type = "string", length=255)
 */
private $country;

не могли бы вы вставить класс сущности addrss?

M Maavia 25.09.2018 14:28

В самом классе сущности нет ничего особенного, поскольку он хранит только аббревиатуру страны в виде строки. Я добавил атрибут страны выше.

chrisp 25.09.2018 14:32

брат, я хочу увидеть твой метод __toString?

M Maavia 25.09.2018 14:35

Зачем мне нужен метод toString? Я показываю содержимое атрибута страны, а не сам класс адреса.

chrisp 25.09.2018 14:56
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
8
4
347
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Думаю, лучшим решением будет использовать встроенный Компонент Symfony intl.

composer require symfony/intl для установки компонента.

Тогда в вашем объекте вы можете use Symfony\Component\Intl\Intl;.

Я предлагаю создать новое свойство для вашей сущности с именем countryName, где установщик этого свойства будет вызываться всякий раз, когда вы устанавливаете код страны. Ваш сеттер может выглядеть примерно так:

public function setCountryName (string $countryCode) 
{
    $this->countryName = Intl::getRegionBundle()->getCountryName(strtoupper($countryCode));
}

Затем в вашем файле yaml измените address.entity.country на address.entity.countryName.

Нет необходимости в сеттере, вместо этого проще просто создать EntityName::getLocalizedCountry(), который вернет Intl, который вы добавили в свой фрагмент кода, и будет использовать $this->country из объекта :)

Alex Rock 28.09.2018 15:00

Но сможете ли вы использовать эту функцию в файле yaml программы easy admin?

Dirk Scholten 28.09.2018 15:51

Другие вопросы по теме