Используя Symfony2 тип поля сущности, следует указать опцию property
:
$builder->add('customers', 'entity', array(
'multiple' => true,
'class' => 'AcmeHelloBundle:Customer',
'property' => 'first',
));
Но иногда этого недостаточно: подумайте о двух клиентах с тем же именем, поэтому отображение электронной почты (уникальное) было бы обязательным.
Другая возможность - реализовать __toString()
в модели:
class Customer
{
public $first, $last, $email;
public function __toString()
{
return sprintf('%s %s (%s)', $this->first, $this->last, $this->email);
}
}
Отклонения последнего заключаются в том, что вы вынуждены отображать объект таким же образом во всех ваших формах.
Есть ли другой способ сделать это более гибким? Я имею в виду нечто вроде функции обратного вызова:
$builder->add('customers', 'entity', array(
'multiple' => true,
'class' => 'AcmeHelloBundle:Customer',
'property' => function($data) {
return sprintf('%s %s (%s)', $data->first, $data->last, $data->email);
},
));