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 :

Symfony: Missing argument 2 [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2011
    Messages : 127
    Par défaut Symfony: Missing argument 2
    Dans mon repository, j'ai réalisé cette requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public function findByUserAndTutorial($user_id, $tutorial_id)
        {
            $querybuilder = $this->createQueryBuilder('f')
                                 ->where('f.user = :user')
                                    ->setParameter('user', $user_id)
                                 ->andWhere('f.tutorial = :tutorial')
                                    ->setParameter('tutorial', $tutorial_id);
     
            $favorite = $querybuilder->getQuery()
                                     ->getOneOrNullResult();
     
            return $favorite;
        }
    Et dans le controller, j'ai imaginé cette action:

    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
     
        public function favoriteByUserandTutorialAction() {
            $userManager = $this->container->get('fos_user.user_manager');
            $user = $userManager->findUserByUsername($this->container->get('security.context')
                                ->getToken()
                                ->getUser());
            $user_id = $user->getId();
     
            $em = $this->getDoctrine()->getManager();
     
            $favorite = $em->getRepository('SiteFrontBundle:Favorite')->findByUserAndTutorial($user_id);
     
            return $this->render('SiteFrontBundle:User/Favorite:favoriteByUserAndTutorial.html.twig', array(
                        'favorite' => $favorite,
            )); 
        }
    Evidemment, j'ai une belle erreur:
    An exception has been thrown during the rendering of a template ("Warning: Missing argument 2 for Site\FrontBundle\Entity\FavoriteRepository::findByUserAndTutorial(), called in C:\wamp\www\PERSO\TFE-2.6.1\src\Site\FrontBundle\Controller\user\FavoriteController.php on line 324 and defined") in SiteFrontBundle:Tutorial:show.html.twig at line 69.

    Je sais qu'il y a des erreurs dans mon controller, en effet je n'y récupère pas le tutorial_id, qui est en fait l'id du tutorial courant, mais voilà... je ne sais pas comment m'y prendre pour le récupérer.

    Un peu d'aide serait la bienvenue.

    Merci à vous, et au passage, bonne fêtes à toutes et tous!

  2. #2
    Membre confirmé
    Avatar de romuluslepunk
    Homme Profil pro
    Juste passioné
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Juste passioné

    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Par défaut
    Bonjour,

    Tu crée une 2ème ligne vide dans le tableau des arguments que tu transmet à twig.

    Remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    return $this->render('SiteFrontBundle:User/Favorite:favoriteByUserAndTutorial.html.twig', array(
                        'favorite' => $favorite, // une virgule de trop
            ));
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    return $this->render('SiteFrontBundle:User/Favorite:favoriteByUserAndTutorial.html.twig', array(
                        'favorite' => $favorite // devrait fonctionner
            ));
    Bonnes fêtes

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 168
    Par défaut
    romuluslepunk ?? tu dis quoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $ar = array('test',);
    print_r($ar);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Array
    (
        [0] => test
    )
    ??

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 252
    Par défaut
    Le problème vient effectivement du fait que tutorial_id ne soit pas défini ni passé en paramètre.
    Seulement pour avoir une idée de comment le définir il nous faut plus d'informations. Ou retrouve t'on l'identifiant/slug du tutoriel courant ?

  5. #5
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2011
    Messages : 127
    Par défaut
    Je pense que romuluslepunk voulait dire qu'en plaçant une virgule à la fin du array de mes arguments, j'insérais une ligne vide.

    Cependant, j'ai viré la virgule, et j'ai toujours la même erreur... Il me manque le 2° argument (voir message d'erreur dans mon premier post).
    Je pense que ce second argument, c'est tutorial_id, mais je n'arrive pas à savoir comment je dois le déclarer dans mon controller.

    Par contre numew, je ne comprends pas bien ta question...

    En fait, ce que je tente de faire, c'est un système de favoris.
    J'ai une entité tutorial, et une entité favorite.

    Dans on entité favorite, j'ai un id, un user_id et un tutorial_id.
    user_id défini l'id de l'user qui souhaite mettre un tutorial en favoris.
    tutorial_id correspond à l'id du tutorial que l'user souhaite ajouter à sa liste de favoris.

  6. #6
    Membre confirmé
    Avatar de romuluslepunk
    Homme Profil pro
    Juste passioné
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Juste passioné

    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Par défaut
    Ah oui autant pour moi, je viens d'apprendre quelque chose.

    A priori tu récupère l'identifient de l'user dans ta requête donc tu devrait l'avoir dans ton template : {{ favorite.userid }}
    Peut-tu nous montrer ta ligne 69 du fichier show.html.twig

  7. #7
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2011
    Messages : 127
    Par défaut
    Actuellement, dans le show, ligne 69, j'ai ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {{ render(controller("SiteFrontBundle:User/Favorite:favoriteByUserAndTutorial")) }}

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/02/2012, 13h04
  2. Réponses: 4
    Dernier message: 11/08/2011, 16h25
  3. missing ) after argument list
    Par aminaoussaleh dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 15/01/2010, 12h30
  4. Erreur : missing argument in __construct()
    Par gillot007 dans le forum Langage
    Réponses: 5
    Dernier message: 06/12/2008, 21h19
  5. Réponses: 10
    Dernier message: 05/06/2008, 18h22

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