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

Laravel 8使用Inertia.js+React调用blogs.show路由缺失blog参数报错

报错原因

Ziggy路由生成工具会严格匹配Laravel路由中定义的参数名,路由里的{blog:slug}仅表示该路由参数名为blog,查询模型时用slug字段做隐式绑定,不代表参数名变成slug。直接向route()方法传入slug字符串时,Ziggy无法识别该值对应blog参数,因此抛出参数缺失错误。

解决方案
  • 方法1(最推荐,无需改动其他业务逻辑)
    调整视图层的路由传参写法,显式指定参数名和值的对应关系:
    <Link href={route('blogs.show', {blog: props.blog.slug})} className="text-blue-500 inline-flex items-center md:mb-2 lg:mb-0">Learn More
      <svg className="w-4 h-4 ml-2" viewBox="0 0 24 24" stroke="currentColor" strokeWidth="2" fill="none" strokeLinecap="round" strokeLinejoin="round">
          <path d="M5 12h14"/>
          <path d="M12 5l7 7-7 7"/>
      </svg>
    </Link>
    
  • 方法2(适配直接传值的写法)
    如果希望直接传slug字符串就能生成路由,可修改路由定义的参数名,同步调整控制器的查询逻辑:
    路由修改为:
    Route::get('blogs/{slug}', [BlogController::class, 'show'])->name('blogs.show');
    
    控制器修改为:
    public function show(string $slug)
    {
       $blog = Blog::where('slug', $slug)->firstOrFail();
       return inertia('Blogs/Show', compact('blog'));
    }
    
    此时视图层原来的传参写法可正常使用。
  • 方法3:排查参数有效性
    如果调整写法后仍报错,可在视图层先打印props.blog.slug确认该值不为空或undefined,参数值为空时Ziggy也会判定为参数缺失。

内容的提问来源于stack exchange,提问作者swatantra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:57:06