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 :

Edition d'une entité [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 125
    Points : 108
    Points
    108
    Par défaut Edition d'une entité
    Bonjour,
    Je cherche à editer une entité mais cela bug.
    Voici mon erreursi on pouvait m'aider à la déchiffrer)
    Catchable Fatal Error: Argument 1 passed to Symfony\Component\Form\Form::createView() must be an instance of Symfony\Component\Form\FormView, instance of SB\UserBundle\Entity\Uzer given, called in /media/www-dev/private/symfonyz/src/SB/UserBundle/Controller/UzerGestController.php on line 66 and defined in /media/www-dev/private/symfonyz/vendor/symfony/symfony/src/Symfony/Component/Form/Form.php line 1041
    Voici mon code du controleur.
    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
        public function editAction($id)
        {
            $uzer = new Uzer();
            $form = $this->createForm(new UzerType, $uzer);
            $repository = $this->getDoctrine()
                               ->getManager()
                               ->getRepository('SBUserBundle:Uzer');
     
            $myuzer = $repository->find($id);
            if($myuzer === null)
            {
                throw $this->createNotFoundException('Vous n\'avez pas encore ajouté d\'utilisateur');
            }
            $request = $this->get('request');
            if ($request->getMethod() == 'POST') {
              $form->bind($request);
              if ($form->isValid()) {
                $em = $this->getDoctrine()->getManager();
                $em->persist($uzer);
                $em->flush();
                return $this->redirect($this->generateUrl('uzer_gest_view_user', array('id' => $uzer->getId(),'uzer'=>$uzer)));
                }
              }
            return $this->render('SBUserBundle:UzerGest:edituzer.html.twig', array('id' => $myuzer->getId(),'form' => $form->createView($myuzer)));
        }

  2. #2
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    Bonjour, si c'est une mis à jour d'une entité, il faut en premier récupérer l'entité

    Puis créer le formulaire avec le bon new type et injecter l'objet récupérer.

    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
        public function editAction($id)
        {
            // pas nécessaire pour un update
            // $uzer = new Uzer();
     
            $repository = $this->getDoctrine()
                               ->getManager()
                               ->getRepository('SBUserBundle:Uzer');
            // On récupère l'entité
            $uzer= $repository->find($id);
            if($uzer=== null)
            {
                throw $this->createNotFoundException('L\'utilisateur n\'existe pas');
            }
     
            // ne pas oublier de déclarer le namespace du UzerType
     
            $form = $this->createForm(new UzerType(), $uzer);
     
            $request = $this->get('request');
            if ($request->getMethod() == 'POST') {
              $form->bind($request);
              if ($form->isValid()) {
                $em = $this->getDoctrine()->getManager();
                $em->persist($uzer);
                $em->flush();
                return $this->redirect($this->generateUrl('uzer_gest_view_user', array('id' => $uzer->getId(),'uzer'=>$uzer)));
                }
              }
            return $this->render('SBUserBundle:UzerGest:edituzer.html.twig', array('id' => $myuzer->getId(),'form' => $form->createView($myuzer)));
        }

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 125
    Points : 108
    Points
    108
    Par défaut
    c'était bien cela merci
    il faut
    mettre l'objet que je souhaite éditer en argument dans lappel de $form = $this->createForm(new UzerType(), $uzer);.

    Mon uzer est mon objet hydratant si je puis dire

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [1.x] [sf 2.1] Edition d'une entité
    Par gabknight dans le forum Symfony
    Réponses: 0
    Dernier message: 26/11/2012, 15h47
  2. [DOM] [Xerces] Insertion d'une entité
    Par Traroth dans le forum Format d'échange (XML, JSON...)
    Réponses: 10
    Dernier message: 19/05/2008, 09h28
  3. mettre une entité date ou pas??
    Par faayy dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 12/04/2005, 09h00
  4. mettre une entité date ou pas et surtout comment!!!
    Par faayy dans le forum Langage SQL
    Réponses: 12
    Dernier message: 12/04/2005, 08h54
  5. [MCD]Faut-il une Entité Date ?
    Par Francis dans le forum Schéma
    Réponses: 2
    Dernier message: 17/01/2005, 18h48

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