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

Laravel中PostController返回视图时出现Undefined variable: post错误

排查Laravel中"Undefined variable: post"错误的原因与解决方法

咱们来一步步拆解你遇到的问题,Undefined variable: post这个错误其实是几个小细节没处理到位,我帮你逐个梳理并修正:

核心错误点分析

1. 控制器未将查询结果赋值给变量

你在show方法里只执行了Post::find($id),但没有把这个查询出来的结果赋值给$post变量。这就导致后面调用with('post', $post)时,$post根本就没有被定义,这是触发错误的主要原因。

2. 控制器未返回视图实例

你调用了view('posts.show')->with('post', $post),但没有用return语句把这个视图实例返回给客户端。即便变量定义正确,视图也不会被渲染输出。

3. 视图中的变量名拼写错误

在show.blade.php里,你写了{{$posts->title}}(复数形式的posts),但你传给视图的变量名是post(单数),这里的拼写不一致也会导致后续的变量访问错误。


修正后的代码

1. 修正PostsController的show方法

public function show($id) { 
    // 将查询结果赋值给$post变量
    $post = Post::find($id); 
    // 返回视图并传递变量给前端
    return view('posts.show')->with('post', $post); 
}

额外优化:如果想在找不到对应ID的帖子时直接返回404页面,可以把find($id)换成findOrFail($id),这样代码更健壮:

$post = Post::findOrFail($id);

2. 修正show.blade.php视图

@extends('layouts.app') 
@section('content') 
<h1>{{$post->title}}</h1> <!-- 把复数posts改为单数post -->
<small>Written on {{$post->created_at}}</small> 
@endsection

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:38:21