Как получить название маршрута laravel в js

#javascript #laravel

Вопрос:

Привет, ребята, у меня есть поиск, и я ничего не нашел, вы знаете, как получить название маршрута laravel в js?

Например, на php мы можем сделать $name = Route::currentRouteName();

Комментарии:

1. Получите его в PHP/Blade и добавьте в переменную в <script> теге

2. @brombeer Это то, что я пытаюсь, но мне нужно включить класс маршрута в blade?

3. Нет; Route является псевдонимом и доступен в представлениях без необходимости импорта. Вы можете сделать var currentRouteName = '{{ Route::currentRouteName() }}'; или использовать data-attribute , как показано ниже.

Ответ №1:

В вашем layout.blade.php

 <body data-page="{{ Route::currentRouteName() }}">
    @yield('content')

    <script>
        var currentRouteName = document.body.dataset.page;
    </script>
</body>
 

Если вам по какой-то причине не нравится вводить что-то в свой DOM только для того, чтобы прочитать его с помощью JavaScript, вы можете сделать что-то другое:

routes/web.php

 Route::get('your-route', function() {
    return response()
        ->view('your-view', compact('your-data'))
        ->header('route-name', 'your-route');
})->name('your-route');
 

your-view.blade.php

 var req = fetch(document.location, {
    'method': 'OPTIONS'
}).then((res) => alert(res.headers.get('route-name')));
 

Ответ №2:

Взгляните на Ziggy, этот пакет npm помогает интегрировать именованные маршруты Laravel с вашим интерфейсом, с его помощью вы можете легко получить текущее название маршрута и даже маршруты доступа для всех конечных точек вашего приложения, как вы бы сделали с Laravel:

https://github.com/tighten/ziggy

Примеры Из Документации:

 //app.js
//get current route name
// Route called 'events.index', with URI '/events'
// Current window URL is https://ziggy.test/events

route().current();               // 'events.index'

// routes/web.php
Route::get('posts/{post}', fn (Request $request, Post $post) => /* ... */)->name('posts.show');

// app.js
route('posts.show', 1); // 'https://ziggy.test/de/posts/1'