Laravel中产品不存在时提示消息不显示的问题求助
问题分析与解决方案
控制器代码问题
- 模型名不符合Laravel规范,需首字母大写(
Product而非product) - 判断逻辑有误:未输入搜索内容时
$products为null,会错误触发无结果提示;用empty()判断集合不准确,Laravel集合应使用isEmpty()方法 - 仅当用户提交搜索内容且无匹配结果时,才应返回错误提示
修正后的控制器代码:
public function index(Request $request) { $search = $request->input('search'); $products = collect(); // 初始化空集合,避免null引发问题 if ($search) { $products = Product::query() ->where('mavach', 'LIKE', "%{$search}%") ->get(); } // 仅当提交搜索且无结果时返回错误提示 if ($search && $products->isEmpty()) { return view('index', compact('products'))->withErrors([ 'no_post_result' => 'Serial không đúng hoặc không tồn tại trên hệ thống' ]); } return view('index', compact('products')); }
Blade视图问题
- 使用原生
$_REQUEST不符合Laravel最佳实践,应改用框架提供的request()辅助函数 - 确保错误提示在查询提交后的逻辑块内,保证触发查询时才显示
修正后的Blade视图关键部分:
@if(request()->has('mavach')) @foreach ($products as $product) <!-- 产品详情表格代码 --> @endforeach @error('no_post_result') <div class="alert alert-danger">{{ $message }}</div> @enderror @endif
额外优化建议
- GET请求表单可移除
@csrf,CSRF保护主要针对POST/PUT/DELETE等修改类请求 - 输入框重复的
class属性需合并:<input class="form-control validate" type="text" name="search" id="search-auto" cols="30" rows="4" value="">
内容的提问来源于stack exchange,提问作者Tu Nguyen
相关产品推荐
相关产品推荐

