Laravel重定向报错:RedirectResponse参数类型错误求助
问题解决思路
1. 错误根源
你遇到的RedirectResponse参数错误,是因为redirect()函数的第二个参数要求是整数类型的HTTP状态码(比如默认的302),但你传了数组['projects' => $projects],类型不匹配导致报错。
2. 核心问题:重定向 vs 返回视图
你同学能正常运行,大概率是直接返回视图而非重定向——重定向是发起一个新的HTTP请求,无法直接把数据传递到目标页面;而返回视图是直接渲染当前请求的页面,可以直接传数据。
解决方案一:直接返回视图(推荐,适合展示场景)
修改控制器代码,把redirect换成view,直接传递数据到blade页面:
public function show(): View { $projects = Project::all(); // 注意模型类名首字母大写,符合PSR规范 return view('list', ['projects' => $projects]); }
解决方案二:必须重定向时的传参方式
如果业务逻辑确实需要重定向(比如表单提交后跳转),需要通过Session闪存数据传递,使用->with()方法:
public function show(): RedirectResponse { $projects = Project::all(); return redirect('list')->with('projects', $projects); }
此时目标页面需要从Session中取出数据:
@if(session('projects')) @foreach(session('projects') as $project) {{-- 你的展示代码 --}} @endforeach @endif
3. 额外修正:Blade循环变量错误
你的目标页面循环写反了,@foreach($project as $projects)会导致变量混乱,应该改成:
@foreach($projects as $project) <h2>{{ $project->title }}</h2> <p>{{ $project->picture_url }}</p> <p>{{ $project->description }}</p> <p>{{ $project->explanation }}</p> <button> Edit </button> <button> Delete </button> @endforeach
内容的提问来源于stack exchange,提问作者HamHam
相关产品推荐
相关产品推荐

