如何在laravel中根据下拉列表显示数据值



我的数据库中有一个表,它有一个字段lis_type,该字段有两个值:salerent,我正在视图页面上调用数据。假设我点击销售页面,只显示sale similar listing。如果我点击Rent,那么rent应该显示similar listing。然而,现在两个列表都在一起,请让我来指导我在哪里犯了错误。

控制器

public function listingshownow(Request $r, $slug)
{
$listview = Listing::where('slug', $slug)->first();
$products = Listing::where('propId', $listview->propId)
->where(function ($query) {
$query->where('lis_type', '=', 'sale')->orWhere('lis_type', '=', 'rent');
})->get();
return view('listings-view', compact('products'));
}

查看类似列表

@foreach($products as $prod)
@if($prod->lis_type === 'sale')
<div class="row featured portfolio-items">
<div class="col-lg-7 col-md-12 homes-content pb-0 mb-44">
<ul class="homes-list clearfix">
<li>
<i class="fa fa-bed" aria-hidden="true"></i>
<span>{{$prod->ls_fs}}</span>
</li>
<li>
<i class="fa fa-bath" aria-hidden="true"></i>
<span>{{$prod->bathroom}} Bathroom</span>
</li>
</ul>
</div>
</div>
@endif
@endforeach

您需要将一个变量传递给控制器,以指示您正在查看的页面类型,这样您就可以在查询/筛选器中使用它。

例如,假设您的销售页面URL看起来像http://example.com/listings/sales。然后你可以设置一条路线,比如:

Route::get('listings/{type}', 'ListingsController@show');

现在你的ListingsController可以有一个类似的方法:

// The $type parameter will be what was matched in the route
public function show($type) {
$listings = Listings::where('lis_type', $type)->get();
return view('listings-view', ['listings' => $listings]);
}

您可能需要检查$type是否仅与您期望的值匹配。你可以在控制器中这样做,例如:

// At the top of show()
if ($type !== 'sales' && $type !== 'rent') {
abort(404);
}

或者你可以在你的路线中限制它,通过指定那里的{type}必须匹配某种模式:

Route::get('listings/{type}', 'ListingsController@show')->where('type', 'sales|rent');

所有这些都包含在Laravel路由文档中,我建议阅读它们,更好的是,花点时间浏览所有文档!30分钟的略读会让你对事情的运作有一个大致的了解,以及在你需要回答问题时应该去哪里看和读更多的东西。

相关内容

  • 没有找到相关文章

最新更新