php - 为什么有结果时消息不隐藏?
问题描述
我有一个页面,其中包含 4 个选择菜单,用于根据会议类别、城市、价格和日期过滤会议。
但是,如果用户的选择没有返回任何结果,则应该出现一条消息“您的搜索没有结果”,并且它有效,该消息就会出现。但是有一个问题,例如用户做了一个不返回任何结果的选择,会出现消息,但是如果用户做了另一个返回结果的选择,结果会出现但消息不会隐藏,消息仍然会出现,说没有结果。
你知道为什么会出现这个消息吗?
HTML:
@if($flash = session('no_conferences'))
<div class="alert alert-danger" role="alert">
<strong><i class="fa fa-check-circle" aria-hidden="true"></i></strong>
{{ $flash }}
</div>
@endif
<form action="{{ route('search.index') }}" method="get">
{{csrf_field()}}
<div class="row">
<div class="col-6 col-md-3 mb-4 mb-md-0">
<select class="custom-select form-control font-size-xsm text-gray searchSelect"
name="category_id">
<option selected="" value="">All categories</option>
@foreach ($categories as $category)
<option value="{{ $category->id }}"
{{ (!empty($categoryId) && $categoryId == $category->id) ? 'selected' : '' }}>
{{ $category->name }}
</option>
@endforeach
</select>
</div>
<div class="col-6 col-md-3 mb-4 mb-md-0">
<select class="custom-select form-control"
name="city">
<option selected="" value="">Country</option>
@foreach($cities as $city)
<option value="{{ $city }}" {{ (!empty($selectedCity) && $selectedCity == $city) ? 'selected' : '' }}>
{{ $city }}
</option>
@endforeach
</select>
</div>
<div class="col-6 col-md-3">
<select class="custom-select form-control font-size-xsm"
name="price">
<option value="paid" {{ (!empty($price) && $price == 'paid') ? 'selected' : '' }}>
Paid
</option>
<option value="free" {{ (!empty($price) && $price == 'free') ? 'selected' : '' }}>
Free
</option>
</select>
</div>
<div class="col-6 col-md-3">
<select class="custom-select form-control"
name="range">
<option value="day" {{ (!empty($range) && $range == 'day') ? 'selected' : '' }}>
Tody
</option>
<option value="week" {{ (!empty($range) && $range == 'week') ? 'selected' : '' }}>
This Week
</option>
</select>
</div>
</div>
</form>
搜索控制器
class SearchController extends Controller
{
public function index(Request $request){
$categoryId = $request->get('category_id');
$city = $request->get('city');
$price = $request->get('price');
$range = $request->get('range');
$pageLimit = 8;
$conference = Conference::Query()->where('status', 'P');
if(!empty($categoryId)) {
$conference = $conference->whereHas('categories', function($qry) use($categoryId) {
$qry->where('category_id', $categoryId);
});
}
if(!empty($city)) {
$conference = $conference->where('city', $city);
}
if(!empty($price)) {
if($price == "free") {
$conference = $conference->whereHas('registrationTypes', function($qry) {
$qry->where('price', '=', 0);
});
} elseif($price == "paid") {
$conference = $conference->whereHas('registrationTypes', function($qry) {
$qry->where('price', '>', 0);
});
}
}
if(!empty($range)) {
if($range == "week") {
$conference = $conference->where('start_date', '<', Carbon::now()->addDays(7));
}
elseif($range == "day") {
$conference = $conference->whereDate('start_date', '=', Carbon::today()->format('Y-m-d'));
}
}
$conference = $conference->orderBy('created_at','desc')->paginate($pageLimit);
if(count($conference) == 0){
Session::flash('no_conferences', 'There are no results for your search
');
}
return view('search', [
'categories' => Category::orderBy('created_at', 'desc')->get(),
'cities' => Conference::orderBy('created_at','desc')->pluck("city")->unique(),
'conferences' => $conference,
'categoryId' => $categoryId,
'selectedCity' => $city,
'price' => $price,
'range' => $range,
]);
}
}
解决方案
此分配将始终返回 true。
@if($flash = session('no_conferences'))
尝试将您的视图条件更改为:
@if(Session::has('no_conferences'))
<div class="alert alert-danger" role="alert">
<strong><i class="fa fa-check-circle" aria-hidden="true"></i></strong>
{{ Session::get('no_conferences') }}
</div>
@endif
或者你可以在你的视图中使用类似的东西并完全删除你控制器中的会话闪存。
@unless (count($conferences))
<div class="alert alert-danger" role="alert">
<strong><i class="fa fa-check-circle" aria-hidden="true"></i></strong>
There are no results for your search
</div>
@endunless
推荐阅读
- .htaccess - 使用 Service Worker 时如何处理 .htaccess 文件中的缓存
- node.js - 以 10 个为一组从 MongoDB 集合中加载文档的最简单方法
- google-play - 谷歌游戏控制台,内部测试仍然出现(对我来说!)
- linux - 使用 linux 中另一个文件的输入条件过滤和提取表的各个部分
- r - ggplot 的问题
- csh - xterm 中命令的退出代码
- reactjs - 通过功能组件导入和导出多个组件
- javascript - 错误:无法在默认位置找到 env 文件 (./.env,./.env.js,./.env.json)
- bash - 如何回显关联数组bash的关联部分
- python - TensorFlow:TypeError:int() 参数必须是字符串、类似字节的对象或数字,而不是“NoneType”