IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

[Form] Récupérer l'identifiant d'un champ d'entité


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 3
    Par défaut [Form] Récupérer l'identifiant d'un champ d'entité
    Bonjour,

    J'avais déjà posté une demande d'aide par rapport à ce problème mais en m'exprimant mal sur ce que je voulais, je recommence alors un nouveau post.

    Mon but serait de pouvoir récupérer l'ID de mes champs "User" et "Chaufferie" pour pouvoir faire une requête et retourner la liste de toutes les workTimes qui correspondent à ces champs. Tout ça à l'envoi de mon formulaire.

    J'ai essayé de le faire de diverses manières dans mon controller, mais je pense que je m'y prends mal. Je n'arrive pas à interagir avec les propriétés "protected" et "private" de mes objets listés dans mon formulaire, qui sont également des classes enregistrées dans ma base de donnée.

    Si quelqu'un peut m'apporter son aide.

    J'ai donc un formulaire: WorkTimeReportForm.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <?php
     
    namespace Project\TimesBundle\Form;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilder;
     
    class WorkTimeReportForm extends AbstractType
    {
        public function buildForm(FormBuilder $builder, array $options)
        {
     
        $builder->add('chaufferie', 'entity', array(
                         'class' => 'ProjectTimesBundle:Chaufferie',
                         'property' => 'nomAdresse',));
        $builder->add('user', 'entity', array(
                        'class' => 'ProjectUserBundle:User',
                        'property' => 'username',));
        $builder->add('dateDebut', 'date', array(
                'widget' => 'single_text',
                'input' => 'datetime',
                'format' => 'dd/MM/yyyy',
                'attr' => array('class' => 'mCalendar')
                ));
        $builder->add('dateLim', 'date', array(
                'widget' => 'single_text',
                'input' => 'datetime',
                'format' => 'dd/MM/yyyy',
                'attr' => array('class' => 'mCalendar')
                ));
        }
     
     
     
        public function getName()
        {
            return 'workTimeReport';
        }
    }
    j'ai mon fichier controller: WorkTimeController.php avec ma fonction reporterAction.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    public function reporterAction()
        {
     
     
            $message = "";
     
            $em = $this->container->get('doctrine')->getEntityManager();
            $qb = $em->createQueryBuilder();
     
            $qb->select('u')
               ->from('ProjectTimesBundle:WorkTime','u')
               ->add('orderBy', 'u.date DESC')
               ->setMaxResults( 15 );
            $query = $qb->getQuery();
     
     
           $workTimes = $query->getResult();
           $workTimeReport = new WorkTimeReport();
     
            $form = $this->container->get('form.factory')->create(new WorkTimeReportForm(), $workTimeReport);
            $request = $this->container->get('request');
     
            if ($request->getMethod() == 'POST')
                {
                    $form->bindRequest($request);<br>                $workTimeReport = new WorkTimeReport($form->getData());<br>              $user = new User($workTimeReport->user);<br>             $chaufferie = new Chaufferie($workTimeReport->chaufferie);<br><br>               $dateDebut =  $workTimeReport->dateDebut;<br>                $dateLim =  $workTimeReport->dateLim;<br><br>                $userId = $user->id;<br>             $chaufferieId = $chaufferie->id;<br><br><br>             $message = "User = " .$user->id. "   Chaufferie =  Objet = ";<br><br>                $query = $repository->createQueryBuilder('p')<br>                ->where('p.user = :user')<br>                ->setParameter('user', $userId)<br>              ->where('p.chaufferie = :chaufferie')<br>                ->setParameter('chaufferie', $chaufferieId)<br>              ->where('p.date > :dateDebut')<br>                ->setParameter('dateDebut', $dateDebut)<br>              ->where('p.date < :dateLim')<br>              ->setParameter('dateLim', $dateLim)<br>              ->orderBy('p.date', 'ASC')<br>               ->getQuery();<br>                $workTimes = $query->getResult();
                }
     
            return $this->container->get('templating')->renderResponse(
            'ProjectTimesBundle:WorkTime:export.html.twig',
                array(
                'form' => $form->createView(),
                'message' => $message,
                'workTimes' => $workTimes
                )
            );
     
     
        }
    Merci d'avance

  2. #2
    Membre éclairé
    Homme Profil pro
    Lead Développeur
    Inscrit en
    Novembre 2011
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lead Développeur
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 52
    Par défaut
    Bonjour,

    Tu t'y prends mal, deja relis ton code, tu fais un new workTimeReport() pour finalement en refaire un apres validation du formulaire, en passant la data du form, ce qui est faux.

    Il y a un moyen propre est simple pour binder facilement ton entite avec ton formulaire, c'est le data_class: http://symfony.com/fr/doc/current/bo...rms-data-class

    Il te suffis juste d'ajouter cette option en precisant la classe workTimeReport, et elle sera automatiquement remplie lors du bind du formulaire.

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/06/2012, 13h51
  2. [AC-2007] Récupérer la valeur d'un champ d'un form pour une requete
    Par jchuillier dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 18/10/2011, 16h27
  3. Réponses: 2
    Dernier message: 14/12/2009, 07h33
  4. [MySQL] Récupérer l'identifiant du champ ajouté
    Par dimebagplan dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 27/12/2008, 00h20
  5. Récupérer la valeur d'un champ dans forms
    Par maserati dans le forum Forms
    Réponses: 5
    Dernier message: 18/12/2008, 16h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo