Laravel France

Redirection en JS

  • Avatar de ArnaudStavrou
    Membre depuis :
    20/01/2016
    Messages :
    46

    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.

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

    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>
  • Avatar de ArnaudStavrou
    Membre depuis :
    20/01/2016
    Messages :
    46

    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.

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

    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('/') }};
  • Avatar de CinquièmeDimension
    Membre depuis :
    18/04/2019
    Messages :
    58

    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 ?

  • Avatar de ArnaudStavrou
    Membre depuis :
    20/01/2016
    Messages :
    46

    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

  • Avatar de ArnaudStavrou
    Membre depuis :
    20/01/2016
    Messages :
    46

    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.

Vous ne pouvez pas répondre à ce sujet.