Laravel 5

Du blade dans un script js

Avatar de CinquièmeDimension
CinquièmeDimension

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. :)

Posté il y a 1 an
Avatar de bestmomo
bestmomo

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.

Posté il y a 1 an
Avatar de CinquièmeDimension
CinquièmeDimension

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.

Posté il y a 1 an
Avatar de KYoann
KYoann

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

Posté il y a 1 an
Avatar de CinquièmeDimension
CinquièmeDimension

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

Posté il y a 1 an
Avatar de KYoann
KYoann

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')}}",
            }
Posté il y a 1 an
Avatar de bestmomo
bestmomo

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.

Posté il y a 1 an

Vous ne pouvez pas répondre à ce sujet.