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

  1. #1
    Membre du Club
    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
    Points : 49
    Points
    49
    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 habitué
    Avatar de romuluslepunk
    Homme Profil pro
    Juste passioné
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Juste passioné

    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Points : 154
    Points
    154
    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 actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 168
    Points : 219
    Points
    219
    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 averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 252
    Points : 358
    Points
    358
    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 du Club
    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
    Points : 49
    Points
    49
    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 habitué
    Avatar de romuluslepunk
    Homme Profil pro
    Juste passioné
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Juste passioné

    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Points : 154
    Points
    154
    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 du Club
    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
    Points : 49
    Points
    49
    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")) }}

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

    Informations professionnelles :
    Activité : Juste passioné

    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Points : 154
    Points
    154
    Par défaut
    Et dans favoriteByUserAndTutorial.html.twig, comment affiche-tu le favori ?
    Vérifie-tu qu'il est pas null via une condition ?

  9. #9
    Membre du Club
    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
    Points : 49
    Points
    49
    Par défaut
    Je ne pense pas que le contenu de la vue favoriteByUserAndTutorial.html.twig soit important, puisque dans le show, ligne 69, je fais un render d'un controller.
    Mais voici le contenu de la vue:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    {% if app.user.id == entity.user.id %}
        OK pour le user
    {% else %}
        Pas ok pour le user
    {% endif %}
    J'ai juste placé une condition pour réaliser un test..

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 252
    Points : 358
    Points
    358
    Par défaut
    Il faudrait voir le reste du fichier show.html.twig
    Tu dis vouloir gérer le tutoriel courant. Tu dois donc l'avoir comme objet dans ce template. Il faut que tu le passe comme paramètre au controller pour pouvoir ensuite l'utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {{ render(controller("SiteFrontBundle:User/Favorite:favoriteByUserAndTutorial", { 'tuto': letuto })) }}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public function favoriteByUserandTutorialAction($tuto) {
            //ton code
            //...
            //on passe le tuto en parametre
            $favorite = $em->getRepository('SiteFrontBundle:Favorite')->findByUserAndTutorial($user_id, $tuto);
            //ton code
            //...
        }

  11. #11
    Membre du Club
    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
    Points : 49
    Points
    49
    Par défaut
    Pour le reste de ma vue show, j'ai ceci:

    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
     
    {% block content %}
        <div class="col-xs-12 col-sm-12">
            <p class="pull-right visible-xs">
                <button type="button" class="btn btn-primary btn-xs" data-toggle="offcanvas">Toggle nav</button>
            </p>
            <div class="panel panel-default">
                <div class="panel-heading">
                    <h2 class="panel-title">{{ entity.title }}</h2>
                </div>
                <div class="panel-body" id="tutorial_list">
                    <div id="detail" class="jumbotron">
                        <h4>Détails : </h4>
                        <ul class="fa-ul">
                            <li>
                                <i class="fa-li fa fa-user"></i>
                                <p>Auteur :</p>
                                {{ entity.user.author.name }}
                            </li>
                            <li>
                                <i class="fa-li fa fa-thumb-tack"></i>
                                <p>Catégorie :</p>
                                {{ entity.category.name }}
                            </li>
                            {% if entity.programminglanguages.count>0 %}
                                {% for programminglanguage in entity.programminglanguages %}
                                    <li>
                                        <i class="fa-li fa fa-code"></i>
                                        <p>Langage(s) utilisé(s) :</p>
                                        {{ programminglanguage.name }}
                                    </li>    
                                {% endfor %}
                            {% endif %}
                            <li>
                                <i class="fa-li fa fa-list-alt"></i>
                                <p>Description :</p>
                                <p>{{ entity.description |capitalize }}</p>
                            </li>
     
                            <li>
                                <i class="fa-li fa fa-clock-o"></i>
                                <p>Création et modification : </p>
                                <p>
                                    Crée le {% if entity.createdAt %}{{ entity.createdAt|date('d-m-Y H:i:s') }}{% endif %}
                                    et modifié le {% if entity.lastModified %}{{ entity.lastModified|date('d-m-Y H:i:s') }}{% endif %}
                                </p>
                            </li>
                        </ul>
                    </div>
     
                    <div id="show_tuto">
                        <div class="panel panel-default">
                            <div class="panel-heading">
                                <h3 class="panel-title">Le tutoriel :</h3>
                            </div>
                            <div class="panel-body">
                                <p>{{ entity.content|raw }}</p>
                            </div>
                        </div>
                    </div>
     
                    {# si le membre connecté n'est pas l'auteur du tutoriel #}
                    {% if is_granted('ROLE_USER') %}
     
                        {# FAVORIS ET PARTAGE #}
                        <h4>Vos tutoriels favoris: </h4>
     
                        {{ render(controller("SiteFrontBundle:User/Favorite:favoriteByUserAndTutorial")) }}
                        {#
                        {{ render (controller("SiteFrontBundle:User/Favorite:new" , { 'tutorial_id' : entity.id })) }}
                        #}
                        <hr />
                        <iframe src="//www.facebook.com/plugins/share_button.php?href=https%3A%2F%2Fdevelopers.facebook.com%2Fdocs%2Fplugins%2F&amp;layout=button_count" scrolling="no" frameborder="0" style="border:none; overflow:hidden;" allowTransparency="true" class="iframeFB"></iframe>
                        <a href="https://twitter.com/share" class="twitter-share-button" data-via="VandendyckChris" data-lang="fr">Tweeter</a>
                        <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
                        <hr />
     
                        {% if app.user != entity.user %}
                            {{ render (controller("SiteFrontBundle:Review:new" , { 'tutorial_id' : entity.id })) }}
                            {{ render (controller("SiteFrontBundle:Comment:new" , { 'tutorial_id' : entity.id })) }}
                            <hr />
                        {% else %}
                            {% block edit_comment %}
                                <a href="{{ path('user_tutorial_edit', { 'slug': entity.slug }) }}" title="Editer" class="btn btn-primary btn-md btn-responsive" role="button">
                                    <span class="glyphicon glyphicon-pencil"></span>
                                    Editer
                                </a>
                            {% endblock edit_comment %}
     
                            <a href="{{ path('user_tutorial_delete', { 'slug': entity.slug }) }}" title="Supprimer" class="btn btn-danger btn-md btn-responsive" role="button">
                                <span class="glyphicon glyphicon-trash"></span>
                                Supprimer
                            </a>
                            <hr />
                            {{ render (controller("SiteFrontBundle:Comment:new" , { 'tutorial_id' : entity.id })) }}
                        {% endif %}
                    {% else %}
                        <em>Pour poster un commentaire, ou pour noter ce tutoriel, veuillez vous connecter.</em>
                        <hr />
                    {% endif %}
     
                    {% block comment %}
                        {{ render (controller("SiteFrontBundle:Comment:commentByTutorial" , { 'id' : entity.id })) }}
                    {% endblock %}
     
                    {% block review %}
                        {{ render (controller("SiteFrontBundle:Review:reviewByTutorial" , { 'id' : entity.id })) }}
                    {% endblock %}
                </div>
            </div>
        </div>
    {% endblock %}
    Je crois comprendre ce que tu veux dire, je vais essayer ça tout à l'heure

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 252
    Points : 358
    Points
    358
    Par défaut
    Oui ça devrait fonctionner en appliquant mon message précédent. Sachant qu'il faut simplement changer le nom de ce que j'ai appelé "letuto" par "entity" pour correspondre au cas présenté.

  13. #13
    Membre du Club
    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
    Points : 49
    Points
    49
    Par défaut
    En effet, ça fonctionne nickel.
    Voilà ce que ça donne:

    Dans la vue show:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {{ render(controller("SiteFrontBundle:User/Favorite:favoriteByUserAndTutorial", { 'tutorial_id' : entity.id })) }}
    Et dans mon controller, l'action favoriteByUserandTutorialAction:

    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
     
     public function favoriteByUserandTutorialAction($tutorial_id) {
            $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, $tutorial_id);
     
            return $this->render('SiteFrontBundle:User/Favorite:favoriteByUserAndTutorial.html.twig', array(
                        'favorite' => $favorite
            )); 
        }
    Par contre, j'ai une petite question.

    Dans la vue favoriteByUserAndTutorial.html, je souhaite vérifier que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {{ favorite.tutorial.id }}
    soit bien égal à l'id du tutorial courant.
    Comment je peux m'y prendre?

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 252
    Points : 358
    Points
    358
    Par défaut
    Je ne vois pas le problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    {% if favorite.tutorial.id == entity.id %}
    {# code #}
    {% endif %}
    mais dans le cas présent, la condition sera toujours vraie

  15. #15
    Membre du Club
    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
    Points : 49
    Points
    49
    Par défaut
    Ben en fait, je voulais placer une condition pour faire ceci:
    Si il existe déjà un favoris pour ce tutoriel et pour l'user courant, un message affiche "ce tutoriel se trouve dans vos favoris".
    Et si il n'existe pas un favoris pour ce tutoriel et pour l'user courant, un bouton "ajouter aux tutoriels".

    Le souci, c'est que si je fais ma condition dans favoriteByUserAndTutorial.html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    {% if favorite.tutorial.id == entity.id %}
    {# code #}
    {% endif %}
    j'ai une erreur "variable entity does not exist". D'où ma question ;-)

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 252
    Points : 358
    Points
    358
    Par défaut
    Ok, en fait cette comparaison n'avait pas de sens car elle était toujours vraie.

    Si je comprend bien tu veux savoir si la requête à retourné un résultat.
    Étant donné le code utilisé dans le repository
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $favorite = $querybuilder->getQuery()->getOneOrNullResult();
    Si pas de résultat favorite sera null, donc dans le template on vérifie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    {% if favorite %}
        {# on à un résultat #}
    {% else %}
        {# pas de résultat #}
    {% endif %}

  17. #17
    Membre du Club
    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
    Points : 49
    Points
    49
    Par défaut
    Bon, voici mon 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
    17
    18
    19
    20
     
        /**
         * List of favorite by user and tutorial
         */
        public function favoriteByUserandTutorialAction($tutorial_id)
        {
            $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, $tutorial_id);
     
            return $this->render('SiteFrontBundle:User/Favorite:favoriteByUserAndTutorial.html.twig', 
                    array(
                        'favorite'      => $favorite
            )); 
        }
    Dans ma vue tutorial/show.html, j'ai ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {{ render(controller("SiteFrontBundle:User/Favorite:favoriteByUserAndTutorial", { 'tutorial_id' : entity.id })) }}
    Et dans ma vue user/favorite/favoriteByUserAndTutorial.html, j'ai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    {% if favorite %}
        Ce tutoriel est dans la liste de vos tutoriels favoris.
    {% else %}
        Ce tutoriel n'est pas dans votre liste de favoris.
    {% endif %}
    Ca fonctionne nickel, mais afficher un message simple ne me suffit pas.
    Il faut en plus, que j'y ajoute un bouton pour ajouter ce tutoriel à la liste.
    Hors, si je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    {% if favorite %}
        Ce tutoriel est dans la liste de vos tutoriels favoris.   
    {% else %}
        Ce tutoriel n'est pas dans votre liste de favoris.
        {{ render (controller("SiteFrontBundle:User/Favorite:new" , { 'tutorial_id' : favorite.id })) }}
    {% endif %}
    Je me tape, à nouveau une belle erreur: Impossible to access an attribute ("id") on a NULL variable ("").

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 252
    Points : 358
    Points
    358
    Par défaut
    C'est normal, tu passe dans le cas ou "favorite" est null est tu veux ensuite l'utiliser, ce n'est pas possible.

    Pour avoir accès à ton tuto courant tu peux le passer à ton template dans ton controller
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    return $this->render('SiteFrontBundle:User/Favorite:favoriteByUserAndTutorial.html.twig', 
                    array(
                        'favorite'      => $favorite,
                        'tutorial_id' => $tutorial_id
            ));
    et donc ensuite l'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    {% if favorite %}
        Ce tutoriel est dans la liste de vos tutoriels favoris.   
    {% else %}
        Ce tutoriel n'est pas dans votre liste de favoris.
        {{ render (controller("SiteFrontBundle:User/Favorite:new" , { 'tutorial_id' : tutorial_id })) }}
    {% endif %}

  19. #19
    Membre du Club
    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
    Points : 49
    Points
    49
    Par défaut
    Super, en fait grâce à toi j'ai compris pas mal de choses là.
    Merci beaucoup!

    C'est pas toujours facile de se lancer dans l'apprentissage de Symfony en autodidacte, c'est même assez chaud en fait.
    Merci d'avoir partagé tes connaissances!

+ 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