Поле EntityType
ожидает, что все варианты выбора будут экземпляром этой сущности, поэтому не стоит добавлять пользовательский параметр, являющийся строковым значением. Конечно, вы можете добавить параметр динамически с помощью JS на стороне клиента после визуализации формы, но я бы не рекомендовал это делать.
Вместо этого я бы использовал ChoiceType
и вручную создавал варианты :
$choices = [
'add' => 'Add'
];
foreach ($er->findBy(['is_removed' => 0]) as $client) {
$choices[$client->getId()] = $client->getCompanyName();
}
$form = $this->createFormBuilder()
->add('client_id', ChoiceType::class, [
'choices' => $choices
])
->getForm();
В выходных примерах вы показываете сгруппированные варианты. Вы можете сделать это с помощью многомерного массива:
foreach ($er->findBy(['is_removed' => 0]) as $client) {
if (!array_key_exists($client->getGroup()) {
$choices[$client->getGroup()] = [];
}
$choices[$client->getGroup()][$client->getId()] = $client->getCompanyName();
}
при условии, что WebClient
имеет свойство $group
, вы, очевидно, можете изменить его на любое, которое вы хотите сгруппировать, по