прежде всего:
"exception":"Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException",
выше исключения происходят, когда маршрут не найден. NotFoundHttpException имеет статус 404
. В вашем коде вы передаете массив категорий в параметрах маршрута, что синтаксически неверно, поэтому не удалось найти маршрут.
Route::get('advanced_filter', 'HomepageController@advanced_filter')->name('advanced_filter');
со стороны внешнего интерфейса: passкатегории в качестве параметров запроса
url будет:
/ advanced_filter? queryParameter = идентификаторы выбранных категорий
/advanced_filter?categories=1,3,7
ваша функция ajax будет:
$.ajax({
type:"GET",
url:`/advanced_filter?categories=${categories.join(',')}`,
success:function(data){
console.log(data);
},
error: function(xhr,errmsg,err){
console.log(xhr.responseText);
}
});
в вашем контроллере:
use Illuminate\Http\Request;
public function advanced_filter(Request $request)
{
$filter_categories=[];
if($request->has('categories')){
$filter_categories=$request->query('categories');
}
/* you can pass extra query parameter like sortBy,sortOrder,limit in url
`/advanced_filter?categories=1,3,7&limit=24&sortBy=name&sortOrder=desc`
*/
$sortBy=$request->has('sortBy')?$request->query('sortBy'):'id';
$sortOrder=$request->has('sortOrder')?$request->query('sortOrder'):'desc';
$limit = $request->has('limit')?$request->has('limit'):12;
/* assuming you have models with relations */
$query = Products::query();
$query->with('categories');
if(count($filter_categories)>0){
$query->whereHas('categories', function ($q) use ($filter_categories) {
$q->whereIn('categories.id',$filter_categories);
});
}
$query->orderBy($sortBy,$sortOrder);
$products = $query->paginate($limit);
return response()->json($products);
}