laravel compact() 和 ->with()

2022-08-30 13:48:27

我有一段代码,我试图找出为什么一个变体有效而另一个变体不起作用。

return View::make('gameworlds.mygame', compact('fixtures'), compact('teams'))->with('selections', $selections);

这使我能够按预期为赛程,球队和选择生成数组视图。

然而

return View::make('gameworlds.mygame', compact('fixtures'), compact('teams'), compact('selections'));

不允许正确生成视图。我仍然可以回显数组,并得到预期的结果,但视图一旦到达选择部分,就不会呈现。

这是oké,因为我让它使用语法,但只是一个奇怪的语法。->with()

谢谢。断续器


答案 1

该函数采用 3 个参数,根据文档,这些参数是:View::make

public View make(string $view, array $data = array(), array $mergeData = array())

在你的例子中,是第4个参数。它不会传递到视图,并且 laravel 会引发异常。compact('selections')

另一方面,您可以根据需要使用任意数量的时间。因此,这将起作用:with()

return View::make('gameworlds.mygame')

->with(compact('fixtures'))

->with(compact('teams'))

->with(compact('selections'));

答案 2

我只是想跳到这里并纠正(建议替代)以前的答案....

您实际上可以以相同的方式使用紧凑型,但是例如更整洁...

return View::make('gameworlds.mygame', compact(array('fixtures', 'teams', 'selections')));

或者,如果您使用的是 PHP > 5.4

return View::make('gameworlds.mygame', compact(['fixtures', 'teams', 'selections']));

这要整洁得多,并且在查看应用程序;)


推荐