Utilisez plutôt un générateur de requêtes. Vous trouverez ici un bon exemple :
http://symfony.com/doc/current/reference/forms/types/entity.html#using-a-custom-query-for-the-entities
Je pense que vous pouvez le comprendre à partir du lien ci-dessus...
OK EDIT #2 selon vos commentaires :
Essayez d'utiliser l'option "choix" présentée ci-dessous :
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('device', EntityType::class, array(
'label' => 'Toestel',
'class' => 'AppBundle:Device',
'choices' => $device->getBrand()->getName().' '.$device->getName(),
}))
->add('parts', EntityType::class, array(
'label' => 'Onderdelen',
'class' => 'AppBundle:Part',
'choice_label' => 'name',
'multiple' => true))
->getForm();
}
Je ne suis pas certain que cela vous convienne, mais c'est possible. La variable $device
doit être passé dans les options du formulaire, ou ailleurs comme une variable qui représente l'objet AppBundle:Device.
Essayez ceci et voyez si cela fonctionne pour vous !
Edit #3 : Sur la base de vos commentaires. Je comprends ce que vous voulez dire par chargement avec AJAX. Qu'est-ce que vous utilisez ? Peut-être 'onload' pour le corps ? Vous ne montrez pas le code.
Cependant, la meilleure solution est peut-être un type de choix avec un tableau vide. Si le tableau vide ne fonctionne pas, essayez d'y mettre quelque chose.
Essayez ces suggestions. Je ne l'ai fait que pour la liste déroulante des "périphériques", car je ne sais pas exactement pour lesquels vous en avez besoin :
Tableau nul :
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('device', ChoiceType::class, array(
'label' => 'Toestel',
'choices' => array(
//null
),
}))
->add('parts', EntityType::class, array(
'label' => 'Onderdelen',
'class' => 'AppBundle:Part',
'choice_label' => 'name',
'multiple' => true))
->getForm();
}
Un tableau avec des déchets dedans :
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('device', ChoiceType::class, array(
'label' => 'Toestel',
'choices' => array(
'Something' => true,
),
}))
->add('parts', EntityType::class, array(
'label' => 'Onderdelen',
'class' => 'AppBundle:Part',
'choice_label' => 'name',
'multiple' => true))
->getForm();
}
Essayez-les !