You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中产品不存在时提示消息不显示的问题求助

问题分析与解决方案

控制器代码问题

  1. 模型名不符合Laravel规范,需首字母大写(Product而非product)
  2. 判断逻辑有误:未输入搜索内容时$products为null,会错误触发无结果提示;用empty()判断集合不准确,Laravel集合应使用isEmpty()方法
  3. 仅当用户提交搜索内容且无匹配结果时,才应返回错误提示

修正后的控制器代码:

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视图问题

  1. 使用原生$_REQUEST不符合Laravel最佳实践,应改用框架提供的request()辅助函数
  2. 确保错误提示在查询提交后的逻辑块内,保证触发查询时才显示

修正后的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 00:20:56