如何在Laravel的return view语句中传递多个变量到视图
问题原因
你遇到的参数无效问题是因为Laravel的view()方法存在传参规则限制,它最多接受3个参数:
- 第一个参数:必填,视图文件的路径
- 第二个参数:可选,传递给视图的所有变量组成的关联数组
- 第三个参数:可选,用于和第二个参数数组合并的额外数组,日常开发中很少使用
你之前的写法给view()传了4个参数,从第三个开始之后的所有数组都不会被框架识别为视图变量,所以会出现IDE灰化、视图无法读取参数的问题。
解决方案
方案1:所有变量放到同一个关联数组传递
直接把所有要传递的变量都放到第二个参数的数组里即可:
return view('posts.overview', [ 'posts' => $posts, 'standorts' => $standorts, 'abteilungs' => $abteilungs ]);
方案2:使用compact()方法简化写法
当传递到视图的变量名和数组键名完全一致时,可以用PHP内置的compact()函数快速生成数组,代码更简洁:
return view('posts.overview', compact('posts', 'standorts', 'abteilungs'));
compact()会自动把传入的字符串作为变量名,提取对应变量值生成键名和变量名一致的关联数组,效果和方案1完全相同。
修改之后你就可以在视图里正常访问$abteilungs变量了。
内容的提问来源于stack exchange,提问作者Frevelman
相关产品推荐
相关产品推荐

