@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 в соответствующих файлах. Также может потребоваться настройка маршрутов и другие дополнительные действия в зависимости от ваших конкретных потребностей.