我想知道如何在我的申请中进行价格过滤?
我正在使用laravel 5.4
我目前有这样的事情:
<form class="form-inline" action="{{route('shop')}}" method="GET">
Min <input class="form-control" type="text" name="min_price">
Max <input class="form-control" type="text" name="max_price">
Keyword <input class="form-control" type="text" name="keyword" >
<input class="btn btn-default" type="submit" value="Filter">
</form>
查看:
{{1}}
哪个会显示我的产品。我还想在我的产品顶部添加过滤器选择框,以便用户过滤结果。
更新:现在将加载页面但没有结果,它只是刷新 页面!
答案 0 :(得分:1)
首先,您应该创建一个表单,您可以放置所有过滤器。
<form action="{{ url('url/to/your/indexproduct')}}" method="GET">
<input type="text" name="min_price"> //User can input minimum price here
<input type="text" name="max_price"> //User can input maximun price here
<input type="text" name="keyword" > // User can input name or description
<input type="submit" value="Filter">
</form>
之后,您的控制器将在单击“提交”按钮后从该表单接收数据。所以,如果你想检查它。这样做。
public function indexproduct(Illuminate\Http\Request $request) {
dd($request->all()) // This will show all your filters
}
然后当您将数据发送到控制器时,您应该修改查询并包含过滤器。 (有很多方法可以做到这一点,但这很简单)
public function indexproduct(Illuminate\Http\Request $request) {
$query = Product::orderBy('created_at','desc');
if($request->keyword){
// This will only execute if you received any keyword
$query = $query->where('name','like','%'.$keyword.'%');
}
if($request->min_price && $request->max_price){
// This will only execute if you received any price
// Make you you validated the min and max price properly
$query = $query->where('price','>=',$request->min_price);
$query = $query->where('price','<=',$request->max_price);
}
$products = $query->paginate(5);
return view('frontend.shop', compact('products'));
}
我希望它会帮助你。