Bonjour,

Voilà, Je suis en train de développer un système de réorganisation d'entité.
Pour faire cela, j'utilise donc Sortable de la librairie jQueryUI et Sortable de package Stof\DoctrineExtensionsBundle
Alors au niveau affichage de pas de problème, mais ce qui me pose problème concerne le formulaire.

Ce que je fais

J'essaye de faire en sorte d'appliquer un champ à chaque entité en créant un formulaire avec les fonctionnalités de Symfony.
Pour cela, je me suis interesser au type EntityType

public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add("position", EntityType::class, [
                "required"      => false,
                "choice_label"  => "getId",
                "label"         => false,
                "multiple"      => true,
                "expanded"      => true,
                "class"         => "AppBundle:Staff",
                "choice_value"  => "getPosition",
                "query_builder" => function (EntityRepository $er) {
                    return $er->createQueryBuilder("s")->orderBy("s.position", "ASC");
                },
            ]);
    }
public function indexAction()
    {
        $staffList = $this->getRepository("AppBundle:Staff")->findBy([], ["position" => "ASC"]);
        $staffOrderForm = $this->createForm(OrderStaffType::class, $staffList);

        return ["staffList" => $staffList, "staffOrderForm" => $staffOrderForm->createView()];
    }

Avec ceci, j'ai 3 problèmes :

  • Pas de référencement de l'input
  • Exécution de deux requêtes Sql

Référencement de l'input

Pour ceux qui concernent le référencement de l'input, je veux parler de l'id dans l'attribut "name" car actuellement il n'affiche pas l'id.

On peut voir que le label correspond à l'id de l'élément mais il n'est pas présent dans le name.
De même, si je veux l'appeler manuellement, j'ai une erreur car Symfony considère la valeur de l'input comme clé.

Exécution de deux requêtes Sql

Je voudrais directement passer une liste d'entité en tant que deuxième argument de la méthode createForm pour éviter de réexécuter la même requête.

Je vous remercie d'avance pour l'aide :)

Cordialement;

Aucune réponse