$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 & Barbuda</option><option value="AR">Argentina</option><option value="AM">Armenia</option><option value="AW">Aruba</option>
Когда я читаю из базы данных {{student.nationality}}, я получаю инициалы
Как сделать так, чтобы класс CountryType сохранял полное название округов?
С точки зрения класса 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'
Спасибо @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}}