Этот ответ будет отражать метод, который я использую, чтобы структурировать все файлы и не смешивать blade
файлы с js
.
В вашем контроллере у вас будет {school_id}
.Вы можете просто передать его блейду следующим образом:
return view('...')->with([
'school_id' => $school_id
]);
Создайте простое поле input
, чтобы иметь возможность извлекать данные.
<input type="hidden" data-fetch-route="{{ route('name_of_route', ['school_id' => $school_id]) }}" id="schoolFetch">
В файле .js
вы можете иметь:
$(function() {
$('#assets-table').DataTable({
processing: true,
serverSide: true,
ajax: $("#schoolFetch").attr('data-fetch-route'),
columns: [
{data: 'asset_tag', name: 'assets.asset_tag'},
{data: 'name', name: 'assets.name'},
]
});
Как вы могли видеть, у вас будет route('name_of_route', ['school_id' => $school_id])
, что означает, что вам нужно будет принять параметр на маршрутеname_of_route
Если вы хотите пойти еще глубже и чище, вы можете создать файл с именем utilities.js
, и этот файл будет иметь все функции, которые вы можете использовать во всем приложении:
window.getRoute = function($element, action){
return $element.attr('data-' + action + '-route');
}
и
ajax: $("#schoolFetch").attr('data-fetch-route'),
превратятся в
ajax: getRoute($("#schoolFetch"), 'fetch'),