Partage
  • Partager sur Facebook
  • Partager sur Twitter

Symfony3 2 champs d'une autre entité dans un form

    21 septembre 2018 à 11:43:04

    Bonjour tout le monde,

    Je vous explique le problème, lors de la création d'un marché, je dois pouvoir le lier à 0 ou 1 affaire.

    J'ai une table "Affaire" contenant un IDaffaire(PK), un libelle, une fonction "getNoAffaireTxt" qui à l'aide de la date de création et de son ordre de création lui attribut un numéro, il n'y a donc pas de colonne NoAffaire dans ce tableau.

    dans Affaire.php

    public function getNoAffaireTxt($sep='.')
        {
            return sprintf('%1$02d',$this->Agence->getIdAgen()).$sep.sprintf('%1$02d',$this->annee).$sep.sprintf('%1$03d',$this->ClientAffaire->getIdCliAff()).$sep.sprintf('%1$02d',$this->noOrdre);
        }

    Je dois récupérer le NoAffaire et le libellé pour que l'utilisateur puisse les sélectionner dans un form via une liste déroulante par exemple:

    18.11.236 Changement d'ordinateur

    18.12.237 Configuration d'une imprimante

    dans Marche.php

    Il y a affaireLiee qui doit stocker cette référence

        /**
         * @var \SIG\VteBundle\Entity\Affaire
         * @ORM\OneToOne(targetEntity="SIG\VteBundle\Entity\Affaire")
         * @ORM\JoinColumn(name="affaireliee",referencedColumnName="id_affai",nullable=true)
         */
        private $affaireLiee;

    Voici dans mon MarcheType.php:

    ->add('affaireLiee', EntityType::class,array(
                    'class' => 'SIGVteBundle:Affaire' ,
                    'label'=>'Affaire Liée',
                    'placeholder'=>'Aucune Affaire',
                    'choice_label' => function ($affaire) {
                        return $affaire->getNoAffaireTxt() . " " . $affaire->getlibelle();
                    },
                    //'choice_label' => 'libelle',
                    'attr' => array (
                        'class'=>'sel2'
                    ),
                      'required'=> false,
                      'by_reference' => false
                ))


    J'arrive à trouver le NoAffaire et le libellé dans la liste lorsque je souhaite créer un nouveau marché, mais je n'arrive pas à envoyer juste ce numéro d'affaire dans affaireLiee.

    Est ce que ce que j'essaie de faire est possible ?

    Si oui, est ce que vous auriez des pistes pour m'orienter ?

    D'avance merci !!



    • Partager sur Facebook
    • Partager sur Twitter
      21 septembre 2018 à 13:31:26

      Bonjour,

      Je n'ai peut-être pas bien compris mais quelques remarques :

      - avec Symfony le vocable n'est pas table ou index mais entité et relation.

      - quand le formulaire est validée, tu récupères dans le contrôleur le n° d'affaire qui a été sélectionné dans le form et là tu fais un set dans l'entité Marche.

      A+

      • Partager sur Facebook
      • Partager sur Twitter
        21 septembre 2018 à 14:01:39

        Bonjour @monkey3d

        Effectivement, mon vocabulaire n'était probablement pas des plus adaptés désolé pour ça.

        Merci pour ce conseil, je vais essayer de voir si j'y arrive, pas facile de débuter !

        PS: Si quelqu'un d'autre à le moindre conseil, je suis preneur.

        -
        Edité par Exxia 21 septembre 2018 à 15:37:35

        • Partager sur Facebook
        • Partager sur Twitter
          24 septembre 2018 à 8:21:27

          Up si quelqu'un a d'autres idées svp, je ne vois pas trop comment utilisé la technique de monkey3d :(

          Merci à tous

          • Partager sur Facebook
          • Partager sur Twitter
            24 septembre 2018 à 8:40:27

            ton formulaire récupère des données dans un controller

            quand tu récupère les données, tu peux traiter plusieurs entité avec dans le controller. c'est ce qu'il t'explique.

            • Partager sur Facebook
            • Partager sur Twitter
              24 septembre 2018 à 10:17:43

              Bonjour @Shoo, merci pour ta réponse.

              J'ai réglé le problème, je tacherais de poster la solution tout à l'heure pour aider d'autres petits noobs comme moi !

              • Partager sur Facebook
              • Partager sur Twitter

              Symfony3 2 champs d'une autre entité dans un form

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown