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
相关产品推荐
相关产品推荐

