У меня есть эта логика в моем приложении для изменения количества товара в корзине:
<script>
const options = document.querySelectorAll('.quantity')
Array.from(options).forEach(function (element) {
element.addEventListener('change', function() {
const id = element.getAttribute('data-id')
axios.patch(`{{ Route::currentRouteName(), ${id} }}`, {
quantity: this.value
})
.then(function (response) {
window.location.href = '{{ route('cartIndex', App::getLocale()) }}'
})
.catch(function (error) {
window.location.href = '{{ route('cartIndex', App::getLocale()) }}'
});
})
});
</script>
Линия
axios.patch(`{{ Route::currentRouteName(), ${id} }}`, {
quantity: this.value
})
Раньше было так:
axios.patch(`/cart/${id}`, {
quantity: this.value
})
Я сделал функционал локализации. Теперь мне нужно передать параметр {lang} каждому маршруту, поэтому я использую {{ Route::currentRouteName() }}. однако остальная часть URL-адреса хранится в переменной javascript.
Как лучше всего получить значение переменной id javascript и передать его методу Route::currentRouteName() PHP?
«Как лучше всего получить значение переменной JavaScript id и передать его PHP-методу Route::currentRouteName()?» - нет, потому что без предварительного запроса к серверу это, конечно, невозможно. Пояснение, см. дубликат.
Я предлагаю вместо маршрута использовать URL-адрес. Вы можете использовать это, выполнив следующие действия:
let lang = "{{ $lang }}";
let url = "{{'Route::currentRouteName()'}}" + '/' + lang;
Или
let lang = @json($lang);
let url = @json('/cart/' . $lang);
Вы не должны включать встроенные скрипты в файл PHP. Вместо этого сохраните сценарии в отдельном файле и используйте атрибут src, чтобы связать сценарий со страницей. Пожалуйста, выполните поиск, как передавать переменные в этом случае, это запрашивается несколько раз в день.