Autour de Laravel

Comment utiliser @push une seule fois?

  • Avatar de kabeda
    Membre depuis :
    10/10/2017
    Messages :
    5

    Bonjour,
    Je suis en train de faire une migration de site depuis yii vers Laravel 5.4 et je rencontre un petit problème.
    Dans les scripts php, il y a un grand nombre d'injections de bouts de code javascript à injecter dans le html, dans ce style

    App()->getClientScript()->registerScript('gettheval',"val theurl= $('#questionNav').val;", LSYii_ClientScript::POS_POSTSCRIPT);

    C'est une fonction assez géniale qui permet d'ajouter en bas de la page html les bouts de javascript. Ils sont identifiés par le premier argument, nommé the Id. Ici gettheval. Le second argument étant le script à insérer et suivant le Id, il ne sera inséré qu'une seule fois.

    Je cherche comment faire avec laravel pour créer ce genre de fonction. Yii a aussi une autre fonction qui permet d'insérer un fichier source JS avec le même système d'unicité selon le Id.

    Est-ce que quelqu'un pourrait me guider sur la manière à adopter? A savoir que le @push ne répond pas à mes besoins puisqu'on ne peut pas vérifier si le script existe déjà ou pas avant de l'injecter.

    Merci.

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2178

    Bonjour,

    A moins d'écrire une commande personnalisé je vois pas. Il y a eu cette question sur Laracasts sans réponse.

    Il y a eu la proposition d'un @pushonce ici.

  • Avatar de kabeda
    Membre depuis :
    10/10/2017
    Messages :
    5

    Merci bestmomo,
    J'attendais que ce soit toi qui me répondes avec une solution. Hélas!

    Donc, je dois tripatouiller dans mon controlleur avant ma view.

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2178

    En fait je n'ai jamais utilisé cette possibilité, j'ai du mal à saisir vraiment son intérêt...

  • Avatar de kabeda
    Membre depuis :
    10/10/2017
    Messages :
    5

    Bonjour,
    Pour les besoins de mon site, j'ai décomposé mes vues en plusieurs fichiers blade partiels dont j'enregistre le résultat dans une variable tableau pour l'afficher dans un blade global. Je dois faire cela de cette façon dans mon controlleur et pas des includes dans un blade global parce qu'il y a des pré-traitements à faire sur les données.
    J'obtenais le résultat d'un @push plusieurs fois dans mon tableau. En fait, il s'agissait d'une erreur dans mon script qui utilisait un view::make(...) sans faire le ->render() sur un fichier blade qui contenait une erreur de syntaxe . J'obtenais alors juste le résultat du @push sans le reste.

    C'est peut-être assez flou mais je n'ai plus besoin du 'pushonce' puisque le 'push' fonctionne maintenant.

    Merci encore.

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2178

    Salut,

    Oui je vois le scénario. Bon l'important c'est que ça fonctionne maintenant ;)

Vous ne pouvez pas répondre à ce sujet.