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 :

Bug à la création d'un formulaire de recherche [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2013
    Messages : 16
    Par défaut Bug à la création d'un formulaire de recherche
    Bonjour à tous,

    Je poste cet appel au secours () car j'essaie de construire un formulaire de recherche pour Symfony2. Mais lorsque je le teste, je suis confronté au bug suivant, que je ne comprends pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FatalErrorException: Error: __clone method called on non-object in .../AssoProject/vendor/doctrine/orm/lib/Doctrine/ORM/QueryBuilder.php line 219
    J'essaie donc de créer une recherche par nom sur mon entité User. J'ai donc un controller :
    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
    public function searchAction()
        {
            //----------------------------------------------------------------------
            // -- Recherche User :
            //----------------------------------------------------------------------
            $form = $this->createForm(new SearchUserFormType);
     
            $request = $this->get('request');
                if ($request->getMethod() == 'POST') {
                    $form->bind($request);
     
                    if($form->isValid())
                    {
                        $em = $this->getDoctrine()->getManager();
                        $data = $this->getRequest()->request->get('assoproject_user_searchUserFormType');
     
                        $liste_users = $em->getRepository('AssoProjectUserBundle:User')->findUsersByParametres($data);
     
                        return $this->render('AssoProjectUserBundle:Search:listResult.html.twig', array('listeUsers' => $liste_users));
     
                    }
                }
            //----------------------------------------------------------------------
     
            return $this->render('AssoProjectUserBundle:Search:search.html.twig', array(
                            'formSearchUser' => $form->createView(),
                ));
        }
    Qui utilise un formulaire :
    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
    <?php
     
    namespace AssoProject\UserBundle\Form\Type;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilderInterface;
     
    class SearchUserFormType extends AbstractType
    {
        /**
         * @param FormBuilderInterface $builder
         * @param array $options
         */
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('name', 'search', array('required' => true))
            ;
        }
     
        /**
         * @return string
         */
        public function getName()
        {
            return 'assoproject_user_searchUserFormType';
        }
    }
    Et un repository :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public function findUsersByParametres($search)
        {
            return $this->createQueryBuilder('a')
                        ->where('a.name LIKE CONCAT("%", :data1, "%")')
                            ->setParameters('data1', $search)
                        ->getQuery()
                          ->getResult();
        }
    Bref, je ne sais pas si quelqu'un arrive à identifier une erreur dans ce code, moi non en tout cas, et aucune réponse à ce sujet sur le Web ...

    D'avance merci pour votre aide,
    MKP !

  2. #2
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    cela veut dire qu'un objet est NULL.

    pour savoir lequel, il faut lire toute la trace de l'erreur. on peut ainsi repérer l'origine de l'erreur; à quel ligne de code a eu lieu l'erreur dans le controller, ou repository ou form ...

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2013
    Messages : 16
    Par défaut
    Salut, merci pour ton aide. Malheureusement, je n'ai pas plus d'infos sur l'erreur qui s'affichent . Et pas plus lorsque j'affiche les logs :
    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
    [2014-01-20 14:15:47] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest". [] []
    [2014-01-20 14:15:47] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest". [] []
    [2014-01-20 14:15:47] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\FragmentListener::onKernelRequest". [] []
    [2014-01-20 14:15:47] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest". [] []
    [2014-01-20 14:15:47] request.INFO: Matched route "asso_project_user_search_form" (parameters: "_controller": "AssoProject\UserBundle\Controller\SearchController::searchAction", "_route": "asso_project_user_search_form") [] []
    [2014-01-20 14:15:47] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest". [] []
    [2014-01-20 14:15:47] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\Security\Http\Firewall::onKernelRequest". [] []
    [2014-01-20 14:15:47] security.DEBUG: Read SecurityContext from the session [] []
    [2014-01-20 14:15:47] security.DEBUG: Reloading user from user provider. [] []
    [2014-01-20 14:15:47] doctrine.DEBUG: SELECT t0.username AS username1, t0.username_canonical AS username_canonical2, t0.email AS email3, t0.email_canonical AS email_canonical4, t0.enabled AS enabled5, t0.salt AS salt6, t0.password AS password7, t0.last_login AS last_login8, t0.locked AS locked9, t0.expired AS expired10, t0.expires_at AS expires_at11, t0.confirmation_token AS confirmation_token12, t0.password_requested_at AS password_requested_at13, t0.roles AS roles14, t0.credentials_expired AS credentials_expired15, t0.credentials_expire_at AS credentials_expire_at16, t0.id AS id17, t0.name AS name18, t0.firstname AS firstname19, t0.phone AS phone20, t0.isEleve AS isEleve21, t0.numEleve AS numEleve22, t0.promoEleve AS promoEleve23, t0.birthday AS birthday24, t0.joiningDate AS joiningDate25, t0.userComment AS userComment26, t0.createDate AS createDate27, t0.updateDate AS updateDate28, t0.updateComment AS updateComment29, t0.deletedAt AS deletedAt30, t0.createUser_id AS createUser_id31, t0.updateUser_id AS updateUser_id32 FROM User t0 WHERE t0.id = ? AND ((t0.deletedAt IS NULL)) LIMIT 1 [1] []
    [2014-01-20 14:15:47] security.DEBUG: Username «*xx@gmail.com" was reloaded from user provider. [] []
    [2014-01-20 14:15:47] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Bundle\AsseticBundle\EventListener\RequestListener::onKernelRequest". [] []
    [2014-01-20 14:15:47] event.DEBUG: Notified event "kernel.request" to listener "Knp\Bundle\PaginatorBundle\Subscriber\SlidingPaginationSubscriber::onKernelRequest". [] []
    [2014-01-20 14:15:47] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ErrorsLoggerListener::injectLogger". [] []
    [2014-01-20 14:15:47] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ErrorsLoggerListener::injectLogger". [] []
    [2014-01-20 14:15:47] event.DEBUG: Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController". [] []
    [2014-01-20 14:15:47] event.DEBUG: Notified event "kernel.controller" to listener "AssoProject\AdminBundle\Listener\ConnectionListener::onKernelRequest". [] []
    [2014-01-20 14:15:47] doctrine.DEBUG: "START TRANSACTION" [] []
    [2014-01-20 14:15:47] doctrine.DEBUG: INSERT INTO ConnectionUser (ip, page, createDate, user_id) VALUES (?, ?, ?, ?) {"1":"::1","2":"/utilisateur/recherche/resultat","3":"2014-01-20 14:15:47","4":1} []
    [2014-01-20 14:15:47] doctrine.DEBUG: "COMMIT" [] []
    [2014-01-20 14:15:47] event.DEBUG: Notified event "kernel.controller" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController". [] []
    [2014-01-20 14:15:47] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener::onKernelController". [] []
    [2014-01-20 14:15:47] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener::onKernelController". [] []
    [2014-01-20 14:15:47] event.DEBUG: Notified event "kernel.controller" to listener "Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener::onKernelController". [] []
    [2014-01-20 14:15:47] emergency.EMERGENCY: __clone method called on non-object {"type":1,"file":"/Users/karlpineau/Sites/AssoProject/vendor/doctrine/orm/lib/Doctrine/ORM/QueryBuilder.php","line":219} []
    Sais-tu où je pourrais obtenir plus d'info sur l'erreur ?
    D'avance merci

  4. #4
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    cela semble etre une erreur SQL. cad un retour de la base.

    donc pour voir ce qu ise passe , tu reprends ta requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    INSERT INTO ConnectionUser (ip, page, createDate, user_id) VALUES (?, ?, ?, ?) 
     
    avec les valeurs suivantes donc.
    {1, "/utilisateur/recherche/resultat", "2014-01-20 14:15:47", 1}
    tu exécute cette requête(que tu va re ecrire) et le lancer dans phpMyAdmin
    tu verra l'erreur directement en live !

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2013
    Messages : 16
    Par défaut
    Cette requête marche parfaitement. D'ailleurs je sais que le problème ne vient pas de là car le bug existait avant que j'ajoute la fonction d'où vient cette requête. Merci pour ton aide.

  6. #6
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    c'est pas un simple probleme de connexion entre symfony et ta base ?

  7. #7
    Membre émérite
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Par défaut
    Bonjour,

    FatalErrorException: Error: __clone method called on non-object in .../AssoProject/vendor/doctrine/orm/lib/Doctrine/ORM/QueryBuilder.php line 219
    La ligne 219 concerne la gestion des paramètres dans un query builder
    https://github.com/doctrine/doctrine...lder.php#LC236

    Le probleme est que tu utilise setParameters au lieu de setParameter

    La méthode setParameters attend un seul argument qui est un objet de classe ArrayCollection
    https://github.com/doctrine/doctrine...lder.php#LC408

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2013
    Messages : 16
    Par défaut
    Yes ! Ca marche ! Merci beaucoup pour l'aide !

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

Discussions similaires

  1. Création d'un formulaire de recherche
    Par jbsushi dans le forum IHM
    Réponses: 6
    Dernier message: 22/05/2013, 09h31
  2. [XL-97] Création d'un formulaire de recherche multi critère
    Par lisooo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/02/2012, 14h56
  3. [AC-2003] Création d'un formulaire de recherche multicritères
    Par xaviier dans le forum VBA Access
    Réponses: 0
    Dernier message: 23/03/2010, 12h56
  4. Création d'un formulaire de recherche
    Par hayron dans le forum IHM
    Réponses: 3
    Dernier message: 19/12/2009, 20h09
  5. Création de formulaire de recherche dans mon projet VB6
    Par seyiv dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 02/04/2007, 13h54

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