Symfony 3.4: Как я могу получить полное название страны в ветке

$builder->add('nationality', CountryType::class, array('preferred_choices' => array('ET'),'required' => true,'attr' => array('style' => 'width:300px')))

В поле со списком отображается полное имя, но сохраняются инициалы (FR для Франции, UG для Уганды, ET для Эфиопии и т. Д.)

Ниже приведен исходный код страницы, и он показывает, что значения являются инициалами.

</div><option value="AF">Afghanistan</option><option value="AL">Albania</option><option value="DZ">Algeria</option><option value="AS">American Samoa</option><option value="AD">Andorra</option><option value="AO">Angola</option><option value="AI">Anguilla</option><option value="AQ">Antarctica</option><option value="AG">Antigua &amp; Barbuda</option><option value="AR">Argentina</option><option value="AM">Armenia</option><option value="AW">Aruba</option>

Когда я читаю из базы данных {{student.nationality}}, я получаю инициалы

Как сделать так, чтобы класс CountryType сохранял полное название округов?

1

Решение

С точки зрения класса CountryType это будет всегда сохраните значение, используя стандартный двухзначный код страны. Это стандартная практика работы с базами данных для хранения только того, что вам нужно, и ничего более, чтобы ссылаться на значение. Что вам нужно сделать, это сделать поиск в вашем шаблоне того, что означает этот код. Я никогда не кодировал Symfony или Twig, но нашел это в документации:

Увидеть: http://symfony.com/doc/3.4/components/intl.html#country-names

use Symfony\Component\Intl\Intl;

\Locale::setDefault('en');

$countries = Intl::getRegionBundle()->getCountryNames();
// => array('AF' => 'Afghanistan', ...)

$country = Intl::getRegionBundle()->getCountryName('GB');
// => 'United Kingdom'
1

Другие решения

Спасибо @sholsinger.

Вот решение

public function showAction(Student $student)
{
$deleteForm = $this->createDeleteForm($student);
$Country = Intl::getRegionBundle()->getCountryName($student->getNationality());
return $this->render('student/show.html.twig', array(
'student' => $student,
'delete_form' => $deleteForm->createView(),
'Nationalite' => $Country,
));
}

Он печатает полное название страны в show.html.twig, используя {{Nationalite}}

0