У меня есть поле поиска для фильтрации новостей, но я понятия не имею, правильный ли это способ сделать.
<form method="GET" action="search" class="form-inline my-2 my-lg-0">
<input style="width:430px;" class="form-control py-2" type="search" name="search" value="Buscar Noticia" id="buscar" onclick='javascript: this.value = ""'>
<span class="input-group-append">
<button class="btn btn-outline-secondary" type="submit">
<i class="fa fa-search"></i>
</button>
</span>
Это мой NoticiaResource:
public function toArray($request)
{
$filtro = $request->get('search');
if(!empty($filtro))
{
$noticias = Noticia::where('titulo', 'LIKE', '%' .$filtro . '%')->paginate(4);
}
else
{
$noticias = Noticia::all();
}
return $noticias->toArray();
}
NoticiasController:
public function show(Noticia $noticias)
{
NoticiaResource::withoutWrapping();
return new NoticiaResource($noticias);
}
Добавить маршрут API в api.php:
Route::get('noticias', 'NoticiasController@show');
И маршрут для возврата того же URL в web.php:
Route::get('search', function(Request $request){
return redirect('noticias.html');
})->name('search');
Проблема в том, что JSON всегда возвращает все новости, ничего не фильтрует.