Laravel 5

Du blade dans un script js

  • Avatar de CinquièmeDimension
    Membre depuis :
    18/04/2019
    Messages :
    37

    Salut les amis !

    Voilà : devant le nombre grandissant de fonctions javascript à la fin de mon layout, j'ai décidé d'en faire un fichier .js que j'appelle à la fin de mon layout. Seulement, la syntaxe blade n'est plus interprétée :/

    Du coup je me retrouve avec des {{ csrf_token() }} et autres {{ url('/') }} dans mon script. Et vous vous doutez que ça fonctionne beaucoup moins bien...

    Quelqu'un sait comment je peux faire en sorte que tout ça soit bien interprété ?

    J'ai bien vu des trucs genre créer un fichier blade avec mon js et l'include dans mon layout ou bien déclarer des variables en js dans mon layout avec les élements à interpreter et les utiliser dans mon script. Mais tout ça me parrait être du bidouillage...

    C'est une appli en Laravel 5.8

    Merci d'avance. :)

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

    Salut,

    Pour informer le Javascript il n'y a pas tellement de choix. Perso je crée des variables dans le layout.

    Ce n'est pas du bidouillage parce qu'il n'y a aucun moyen pour envoyer des informations directement dans le fichier Javascript.

    Quand il y a beaucoup d'infos à transmettre je fais en deux temps : j'envoie la page avec le Javascript de base qui envoie une requête pour récupérer les infos en Ajax. Mais ça fait deux requêtes du coup.

  • Avatar de CinquièmeDimension
    Membre depuis :
    18/04/2019
    Messages :
    37

    OK merci bestmomo.
    Je n'ai que deux variables à charger donc c'est pas trop chiant à faire. Je voulais juste savoir s'il y avait un meilleur moyen.

  • Avatar de KYoann
    Membre depuis :
    11/02/2019
    Messages :
    37

    Tu génére du code html dans tes scripts JS, c'est là ta problématique ?

  • Avatar de CinquièmeDimension
    Membre depuis :
    18/04/2019
    Messages :
    37

    J'avais besoin de { { url('/') } } et { { csrf_token() } } (j'ai mis un espace sinon ça n'apparait pas)
    Mais du coup j'ai créé des variables dans le layout et les ai utilisées dans mon fichier js

  • Avatar de KYoann
    Membre depuis :
    11/02/2019
    Messages :
    37

    Effectivement, c'est galère la définition des routes dans les javascripts, d'autant plus quand tu utilise les mêmes fonctions JS Ajax depuis des vues differentes, les url ne fonctionnent plus, j'ai du faire la même chose que toi en définisant une constante dans le layout !

    const routes = {
    sitesDetail_Json: "{{route('sitesDetail_Json')}}",
    sitesDetail_Jsona: "{{route('sitesDetail_Jsona')}}",
    sitesDetail_Jsonb: "{{route('sitesDetail_Jsonb')}}",
    sitesDetail_Jsonc: "{{route('sitesDetail_Jsonc')}}",
    }
  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2565

    En ce qui concerne l'url pas trop besoin de l'envoyer parce qu'on peut facilement récupérer l'url actuelle dans Javascript (window.location.href).

    Pour le csrf_token on peut mettre la valeur dans un meta et le récupérer aussi avec Javascript.

Vous ne pouvez pas répondre à ce sujet.