Laravel France

Redirection en JS

Avatar de ArnaudStavrou
ArnaudStavrou

Bonjour,

Après plusieurs tentatives infructueuses, je me tourne vers vous pour au moins avoir une piste.

Je veux ouvrir une page suite à un click sur une ligne de tableau. Je vous mets mon code pour que vous ayez toutes les cartes :

La route a appelé :

Route::get('/dossier/{folderNumber}', function () {
    return view('customer/folder');
})->name('folder');

Mon code JS qui est appelé à partir de ma vue :

$(function () {
    $('table').on("click", "tr", function () {
        var typeOfTable;
        var log;
        var path;

        typeOfTable = $('table').data('value');
        log = $(this).data('value');

        alert(typeOfTable);
        alert(log);

        path = "{{route('" + typeOfTable + "', ['" + typeOfTable + "Number' => '" + log + "'])}}";

        alert(path);

        window.location.href = path;
    });
});

Je récupére donc bien tous mes éléments, mais j'arrive pas à appelé ma route. Je ne dois pas faire les choses correctement. Merci pour votre aide.

Posté il y a 5 mois
Avatar de CinquièmeDimension
CinquièmeDimension

Salut!

As-tu essayé window.location = path; (sans le .href) ?

Sinon tu peux essayer l'inverse: au lieu de mette un eventListener, tu appelle une fonction depuis ton tableau:

<tr onclick="ma_function("maDataValue")"></tr>

<script>
let typeOfTable = $('table').data('value');

 function ma_function(log) {
        let path;
        path = "{{route('" + typeOfTable + "', ['" + typeOfTable + "Number' => '" + log + "'])}}";
        window.location = path;
    });
</script>
Posté il y a 5 mois
Avatar de ArnaudStavrou
ArnaudStavrou

Bonjour et merci pour ta réponse,

Donc sans le ".href", j'ai le même problème, dont voici la réponse :

Forbidden You don't have permission to access /{{route('folder', ['folderNumber' => '114490'])}} on this server.

Le problème vient surement de l'interprétation des "{{}}" qui ne se fait pas. En tout cas merci pour ta piste, je continue ma recherche.

Posté il y a 5 mois
Avatar de bestmomo
bestmomo

Salut,

Tu peux pas attendre que l'helper route se fasse à postériori dans ta page ! La consitution de l'url doit être totalement prise en charge par le Javascript. Rien ne t'empêche d'envoyer l'ur de base dans une variable Javascript par contre :

let url = {{ url('/') }};
Posté il y a 5 mois
Avatar de CinquièmeDimension
CinquièmeDimension

Oui si tu utilise un fichier js externe la syntaxe TWIG ne fonctionne pas. Comme dit bestmomo, tu dois créer des variables dans ta page .blade.html avec les variables dont tu aura besoin.

Pourtant vu que dans ton code tu as fait un alert(path); tu dois voir si ton code est interprété ou non.

Ca te donne quoi ton path ?

Posté il y a 5 mois
Avatar de ArnaudStavrou
ArnaudStavrou

Merci à vous 2,

Donc si je comprends bien, je récupére mes variables dans ma vue, fais mon traitement js et le récupère dans ma vue pour faire appel à ma page.

CinquièmeDimension mon path me retourne la route sans interprétation, j'avais fait un fichier externe pour évité le copier / collé, ou évité de le mettre dans mon layout, car pas besoin à chaque page.

Je vais donc tout réintégrer et faire mes tests, je vous tiens au jus.

Merci, Arn0

Posté il y a 5 mois
Avatar de ArnaudStavrou
ArnaudStavrou

Un grand merci à vous,

J'ai suivi les conseils de Bestmomo, qui une fois de plus, m'a permis de m'en sortir et de faire ce que je voulais.

Merci à tous les deux, en espérant, avoir votre niveau un jour.

Posté il y a 5 mois

Vous ne pouvez pas répondre à ce sujet.