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 :

Erreur d'affichage avec une entité


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 96
    Points : 48
    Points
    48
    Par défaut Erreur d'affichage avec une entité
    Bonjour à tous !

    J'ai l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Unable to guess how to get a Doctrine instance from the request information.
    Pour ma vue twig j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {% render  'MonAroundUserBundle:Site:contactBetweenUsers' with { 'userTo' : user } %}
    Mon User est une entity.

    Quand je valide mon mini formulaire (qui n'est qu'un message) je lance le code suivant :

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    public function contactBetweenUsersAction(User $userTo)
        {                   
            if(!$this->get('security.context')->isGranted('ROLE_USER'))
            {
                return $this->render('monAroundUserBundle:NotRegister:notRegister.html.twig');
            }
            else
            {
                $monevent = new \monAround\monBoardBundle\Entity\monEvent();            
                $userManager = $this->get('fos_user.user_manager');
                $userCurrent = $this->container->get('security.context')->getToken()->getUser();
                $user = $userManager->findUserBy(array('username' => $userCurrent));
                $monboard = null;
     
                if($user->getmonBoard() != null) 
                {               
                    $monboard = $user->getmonBoard();
                }
                else
                {
                    $monboard = new \monAround\monBoardBundle\Entity\monBoard();
                    $user->setmonBoard($monboard);
                }
     
                if($monboard != null)
                {
                    $monevent->setUserTo($userTo);
                    $status =  $this->getDoctrine()->getRepository('monAroundmonBoardBundle:monStatus')->findAllStatus();;
                    $monevent->setStatus($status[0]);
                    $monevent->setmonBoard($monboard);
                    $monboard->addmonEvent($monevent);
                }    
     
                $form = $this->createForm(new \monAround\monBoardBundle\Form\Type\monEventType, $monevent);
     
                $formHandler = new \monAround\monBoardBundle\Form\Handler\monBoardHandler(
                                              $form, 
                                              $this->get('request'),
                                              $userManager,
                                              $user);
     
                if($formHandler->process())
                {           
                    return $this->redirect($this->generateUrl('mon_around_user_monboard', 
                                          array('id' => $user->getId())));
                }
            }
     
            return $this->container->get('templating')
                    ->renderResponse('monAroundUserBundle:monBoard:contactBetweenUsers.html.'.$this->container
                    ->getParameter('fos_user.template.engine'),  array('form' => $form->createView()));
        }
    Je ne comprends pas mon erreur. Quelqu'un aurait une idée ?

    Merci beaucoup !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Fait un breack sur la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $form = $this->createForm(new \monAround\monBoardBundle\Form\Type\monEventType, $monevent);
    et vérifie les informations.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur PHP5/Symfony2
    Inscrit en
    Août 2012
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur PHP5/Symfony2

    Informations forums :
    Inscription : Août 2012
    Messages : 89
    Points : 96
    Points
    96

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 96
    Points : 48
    Points
    48
    Par défaut
    Ca ne fonctionne pas pour moi.

    J'ai fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // config.yml
     
    sensio_framework_extra:
        router:  { annotations: true }
        request: { converters: true }
        view:    { annotations: true }
        cache:   { annotations: true }
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    /**
         * @Route("/account/contact/{id}")
         * @ParamConverter("userTo", class="monSiteUserBundle:User")
         * @Template()
         */
        public function contactBetweenUsersAction(\monSite\UserBundle\Entity\User $userTo)
        {                        
            if(!$this->get('security.context')->isGranted('ROLE_USER'))
            {
                return $this->render('monSiteUserBundle:NotRegister:notRegister.html.twig');
            }
            else
            {
                $monevent = new \monSite\monBoardBundle\Entity\monEvent();            
                $userManager = $this->get('fos_user.user_manager');
                $userCurrent = $this->container->get('security.context')->getToken()->getUser();
                $user = $userManager->findUserBy(array('username' => $userCurrent));
                $monboard = null;
     
                if($user->getmonBoard() != null) 
                {               
                    $monboard = $user->getmonBoard();
                }
                else
                {
                    $monboard = new \monSite\monBoardBundle\Entity\monBoard();
                    $user->setmonBoard($monboard);
                }
     
                if($monboard != null)
                {
                    $monevent->setUserTo($userTo);
                    $status =  $this->getDoctrine()->getRepository('monSitemonBoardBundle:monStatus')->findAllStatus();;
                    $monevent->setStatus($status[0]);
                    $monevent->setmonBoard($monboard);
                    $monboard->addmonEvent($monevent);
                }    
     
                $form = $this->createForm(new \monSite\monBoardBundle\Form\Type\monEventType, $monevent);
     
                $formHandler = new \monSite\monBoardBundle\Form\Handler\monBoardHandler(
                                              $form, 
                                              $this->get('request'),
                                              $userManager,
                                              $user);
     
                if($formHandler->process())
                {           
                    return $this->redirect($this->generateUrl('mon_Site_user_monboard', 
                                          array('id' => $user->getId())));
                }
            }
     
            return $this->container->get('templating')
                    ->renderResponse('monSiteUserBundle:monBoard:contactBetweenUsers.html.'.$this->container
                    ->getParameter('fos_user.template.engine'),  array('form' => $form->createView()));
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
         {% render 'monSiteUserBundle:monBoard:contactBetweenUsers' with { 'userTo' : user } %}

    Et ma route :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    mon_site_user_contact:
        pattern:   /account/contact
        defaults:  { _controller: monSiteUserBundle:monBoard:contactBetweenUsers }
    J'ai toujours l'erreur

    Unable to guess how to get a Doctrine instance from the request information.

    Avec en rouge dans mes logs :

    LogicException: Unable to guess how to get a Doctrine instance from the request information. (uncaught exception) at C:\wamp\www\monsitedev\vendor\bundles\Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter.php line 45
    Merci de votre aide, Bonnes fêtes

  5. #5
    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,
    Afin d'y voir plus clair,

    Je pense qu'il y a un problème de routage

    Tu fais un appel dans ton routing.yml et une annotation

    Je pense que ça doit se planter à ce niveau la.

    Comme tu fais appel au annotation, utilise ceci dans ton routing.yml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    post:
        resource: "@SensioBlogBundle/Controller/PostController.php"
        type:     annotation
    En modifiant bien sur la ressource en fonction de ton bundle

    ça devrait donner quelque chose comme ça

    mon_site_user_contact:
    resource: "@monSiteUserBundle/Controller/monBoardController.php"
    type: annotation
    Bien sur, c'est à vérifier au niveau ton code.

    Poste si tu peux le résultat de la commande app/console router:debug --env=prod

    Merci

  6. #6
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 96
    Points : 48
    Points
    48
    Par défaut
    Re à tous,

    J'ai changer ma facon de pensé :

    J'ai fait en sorte qu'un event soit relié a 2 switchBoard. J'ai donc changé mes relation.

    Dans mon controller j'ai donc fait ça :

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    public function contactBetweenUsersAction($userToExchange)
        {              
            if(!$this->get('security.context')->isGranted('ROLE_USER'))
            {
                return $this->render('monSiteUserBundle:NotRegister:notRegister.html.twig');
            }
            else
            {
                $userManager = $this->get('fos_user.user_manager');
                $userCurrent = $this->container->get('security.context')->getToken()->getUser();
                $user = $userManager->findUserBy(array('username' => $userCurrent->getUsername()));
                $monboard = null;
     
                if($user->getmonBoard() != null) 
                {               
                    $monboard = $user->getmonBoard();
                }
                else
                {
                    $monboard = new \monSite\monBoardBundle\Entity\monBoard();
                    $user->setmonBoard($monboard);
                }
     
                $monevent = $this->initmonEvent($monboard);
                $monboard->setLastEvent($monevent);
                $form = $this->createForm(new \monSite\monBoardBundle\Form\Type\monBoardType(), 
                                          $monboard);
                $monBoardToExchange = null;
                if($userToExchange->getmonBoard() != null) 
                {               
                    $monBoardToExchange = $userToExchange->getmonBoard();
                }
                else
                {
                    $monBoardToExchange = new \monSite\monBoardBundle\Entity\monBoard();
                    $userToExchange->setmonBoard($monBoardToExchange);
                }
                $userToExchange->setmonBoard($monBoardToExchange);
                $monBoardToExchange->addmonEvent($monevent);
     
                $userManager->updateUser($userToExchange);
                $userManager->updateUser($user);
     
                $formHandler = new \monSite\monBoardBundle\Form\Handler\monBoardHandler($form, 
                                    $this->get('request'), 
                                    $userManager,
                                    $user
                                    );
     
                if($formHandler->process())
                {
                    return $this->redirect($this->generateUrl('mon_Site_user_monboard'));
                }
                return $this->render('monSiteUserBundle:monBoard:contactBetweenUsers.html.twig',
                       array('form' => $form->createView()));
            }
        }
     
        private function initmonEvent(\monSite\monBoardBundle\Entity\monBoard $monBoard)
        {
             $monevent = new \monSite\monBoardBundle\Entity\monEvent();
             $status = $this->getDoctrine()->getRepository('monSitemonBoardBundle:monStatus')->findAllStatus();;
             $monevent->setStatus($status[0]);
             $monevent->setmonBoard($monBoard);
             return $monevent;
        }
    Dans ma vue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       {% render 'monSiteUserBundle:monBoard:contactBetweenUsers' with { 'userToExchange' : user } %}
    et j'ai l'erreur suivante :
    Controller "monSite\UserBundle\Controller\monBoardController::contactBetweenUsersAction()" requires that you provide a value for the "$userToExchange" argument (because there is no default value or because there is a non optional argument after this one)
    voilà voilà...
    Ca me déprime...

  7. #7
    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, et bonne année de dev 2013

    Il ne faut pas déprimer

    Ce que le message indique c'est que la fonction contactBetweenUsersAction($userToExchange) requère un argument et il n'est pas présent.

    Donc vérifie que dans cette fonction twig
    {% render 'monSiteUserBundle:monBoard:contactBetweenUsers' with { 'userToExchange' : user } %} tu passes bien quelque chose. vérifie que user existe bien.

    Tu peux ajouter dans ton controller contactBetweenUsersAction($userToExchange = NULL) et faire un var_dump(($userToExchange ); exit;.

    juste au début de ton controller pour vérifier ce qui y arrive dans ce controler.

    Le meilleur moyen de tester contactBetweenUsersAction est de le faire en standalone via une route dédié.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Salut stephan.78,

    Le sujet est aussi passé sur le chat et il me semble qu'entre temps nous avons solutionné le problème

  9. #9
    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,

    Y a plus qu'à poster la solution et à indiqué le post résolu alors ...

    Chouette

Discussions similaires

  1. [2.x] ManyToMany avec attribut, erreur à la création d'une entité
    Par Warnershoot dans le forum Symfony
    Réponses: 5
    Dernier message: 19/06/2012, 14h01
  2. affichage avec une condition double
    Par Cantalou dans le forum IHM
    Réponses: 2
    Dernier message: 03/05/2007, 18h44
  3. affichage avec une infobulle
    Par snetechen dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/02/2007, 14h38
  4. [POO] Erreur de syntaxe avec une classe
    Par sirbaldur dans le forum Langage
    Réponses: 5
    Dernier message: 10/01/2007, 13h30
  5. Erreur de connection avec une ADOTable
    Par Sunchaser dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/03/2006, 18h03

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