【发布时间】:2020-12-12 15:13:51
【问题描述】:
我正在尝试使用下拉选择创建搜索过滤器。该代码仅在选择所有下拉列表(品牌和型号)时显示结果。但即使选择了单个下拉列表(品牌或型号),它也应该可以工作。目前,如果我选择一个下拉菜单,结果页面会显示“未找到匹配数据”。这就是我所做的-
控制器
class CarFrontController extends Controller
{
public function index_classiccars(Request $request)
{
$filterMakes = DB::table('cars')->select('make')->distinct()->get()->pluck('make');
$filterModels = DB::table('cars')->select('model')->distinct()->get()->pluck('model');
$classiccar = Car::query();
if ($request->has('make')) {
$classiccar->where('make', $request->make);
}
if ($request->has('model')) {
$classiccar->where('model', $request->model);
}
return view(
'layouts.frontend.cars.classiccars_index',
[
'filterMakes' => $filterMakes, 'filterModels' => $filterModels,
'classiccars' => $classiccar->get()
]
);
}
public function store(Request $request)
{
return $request->all();
return view('layouts.frontend.cars.classiccars_index');
}
}
数据刀片
@forelse ($classiccars as $car)
<div class="row">
<div class="col-lg-5 col-md-5 col-pad">
<div class="car-thumbnail">
<a href="car-details.html" class="car-img">
<div class="price-box">
<span>£{{ $car->price }}</span>
</div>
@php $i=1; @endphp
@foreach ($car->join_caralbum as $image)
@if ($i>0)
<img class="d-block w-100" src="{{asset($image->image_location)}}" alt="car" height="225px" >
@endif
@php $i--; @endphp
@endforeach
</a>
<div class="carbox-overlap-wrapper">
<div class="overlap-box">
<div class="overlap-btns-area">
<a class="overlap-btn" href="{{ url('car_show/'.$car->id) }}">
<i class="fa fa-eye-slash"></i>
</a>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-7 col-md-7 col-pad align-self-center">
<div class="detail">
<h3 class="title">
<a href="car-details.html">{{ $car->make }}</a>
</h3>
<ul class="custom-list">
<li>
<a href="#">{{ $car->model }}</a> /
</li>
......
</ul>
<ul class="facilities-list clearfix">
.....
.....
....
</ul>
</div>
</div>
</div>
</div>
@empty
No matching data found
@endforelse
滤片
{!! Form::open(['action'=>'CarFrontController@index_classiccars','method'=>'GET']) !!}
<select class="form-control" name="make" id="make">
<option> Make(All)</option>
@foreach ($filterMakes as $make)
<option value="{{ $make }}">{{ $make }}</option>
@endforeach
</select><br>
<select class="form-control" name="model" id="model">
<option> Model(All)</option>
@foreach ($filterModels as $model)
<option value="{{ $model }}">{{ $model }}</option>
@endforeach
</select><br>
{{ Form::submit('Update Search',['class'=>'btn btn-primary']) }}
【问题讨论】:
-
将
<option> Model(All)</option>更改为<option value=""> Model(All)</option>,然后将if ($request->has('model'))更改为if ($request->filled('model')) -
是的。现在可以了。非常感谢
标签: laravel forms eloquent dropdown