#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'