У меня есть сущность Institution
. В форме пользователь может выбрать один или несколько. Я использую Select2 для конца шрифта. Учреждение имеет атрибут internationalName
, который является атрибутом по умолчанию из-за:
Institution.php
public function __toString()
{
return $this->internationalName;
}
Учреждение также может иметь сокращенное название в качестве атрибута abbreviation
. Я хотел бы использовать этот второй атрибут для отображения (если он существует) в форме выбора. Еще лучше было бы то, что это не показано, но вы можете искать это, но я действительно не знаю, возможно ли это вообще.
Я мог бы изменить __toString()
так, чтобы он включал abbreviation
, но это нежелательно из-за других форм, поэтому я пытаюсь заставить его показываться только в этой форме через
LocationType.php
->add('Institutions', EntityType::class, [
'class' => Institution::class,
'label' => 'Connected Institution(s)',
'multiple' => true,
'attr' => ['data-select' => 'true', 'data-placeholder' => 'start typing to find your institution...'],
'constraints' => array(
new Count(array(
'min' => 1,
'minMessage' => "Select at least one institution."))),
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('i')
->orderBy('i.internationalName', 'ASC');
},
Я пытался использовать 'choice_label' => 'abbreviation'
(просто в качестве теста), но это делает все метки пустыми , что я действительно не понимаю, почему. Я также попытался 'choice_label' => 'internationalName'.'abbreviation'
, но это не сработает, потому что нет свойства internationalNameabbreviation
. Я думал о создании нового атрибута, где я объединяю два, но учитывая, что 'choice_label' => 'abbreviation'
уже приводит к пустому списку, я не думаю, что это будет работать. Любые другие варианты или решения?
edit: по запросу соответствующая часть класса сущности,
Institution.php
/**
* @Assert\NotBlank(message="Please enter the international name.")
* @ORM\Column(type="string")
*/
private $internationalName;
/**
* @ORM\Column(type="string", nullable=true)
*/
private $abbreviation;