Laravel中传递的$partners变量提示未定义问题排查
问题出在视图变量的传递方式上,和Post模型无关!
首先要澄清你的疑惑:完全允许基于同一个Post模型创建多个不同的变量,你遇到的问题和模型本身没有任何关系,纯粹是Laravel视图函数的参数传递写法错误了。
看你控制器里的这段代码:
return view( 'landing.onepageindex', ['posts' => $posts], ['pages' => $pages], ['partners' => $partners] );
Laravel的view()函数只接受第二个参数作为完整的视图数据数组,后面的参数并不是用来传递变量的(第三个参数是可选的回调函数,用于修改视图实例)。这就导致你只有$posts被正确传递到视图中,而$pages和$partners其实根本没被传进去——你说$pages能正常使用,大概率是$pages通过其他方式(比如视图共享、中间件绑定)进入了视图上下文,和这次的参数传递无关。
正确的写法应该是这样:
把所有需要传递的变量都放在同一个关联数组里:
return view('landing.onepageindex', [ 'posts' => $posts, 'pages' => $pages, 'partners' => $partners ]);
或者用Laravel提供的compact()函数,写法更简洁(当变量名和数组键名一致时非常好用):
return view('landing.onepageindex', compact('posts', 'pages', 'partners'));
这样修改后,$partners就能在视图里正常遍历使用了。
内容的提问来源于stack exchange,提问作者Dante R.
相关产品推荐
相关产品推荐

