@johnpaul.blick
Для реализации поиска с фильтрами в Laravel необходимо выполнить следующие шаги:
1
|
Route::get('/search', 'SearchController@search')->name('search'); |
1
|
php artisan make:controller SearchController |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public function search(Request $request) { $query = $request->input('query'); $results = Product::where('name', 'like', '%'.$query.'%') ->where('price', '>', $request->input('min_price')) ->where('price', '<', $request->input('max_price')) ->orderBy('name') ->paginate(10); return view('search', [ 'results' => $results, 'query' => $query, 'min_price' => $request->input('min_price'), 'max_price' => $request->input('max_price'), ]); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
@extends('layouts.app') @section('content') <h1>Search Results</h1> <form action="{{ route('search') }}" method="get"> <div class="form-group"> <label for="query">Search Query</label> <input type="text" name="query" id="query" value="{{ $query }}" class="form-control"> </div> <div class="form-group"> <label for="min_price">Minimum Price</label> <input type="number" name="min_price" id="min_price" value="{{ $min_price }}" class="form-control"> </div> <div class="form-group"> <label for="max_price">Maximum Price</label> <input type="number" name="max_price" id="max_price" value="{{ $max_price }}" class="form-control"> </div> <button type="submit" class="btn btn-primary">Search</button> </form> <table class="table"> <thead> <tr> <th>Name</th> <th>Price</th> </tr> </thead> <tbody> @foreach ($results as $product) <tr> <td>{{ $product->name }}</td> <td>{{ $product->price }}</td> </tr> @endforeach </tbody> </table> {{ $results->links() }} @endsection |
В данном примере мы выводим форму для ввода параметров поиска и результаты поиска в виде таблицы. При этом мы передаем параметры поиска в представление для их сохранения в полях формы. Кроме
@johnpaul.blick
того, не забудьте подключить SearchController и модель Product в соответствующих файлах. Также может потребоваться настройка маршрутов и другие дополнительные действия в зависимости от ваших конкретных потребностей.