laravel compact()和 - > with()

dst*_*101 22 php laravel-4

我有一段代码,我试图找出为什么一个变体有效而另一个没有.

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

这允许我按预期生成夹具,团队和选择的数组视图.

然而,

return View::make('gameworlds.mygame', compact('fixtures'), compact('teams'), compact('selections'));
Run Code Online (Sandbox Code Playgroud)

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

没关系,因为我使用->with()语法但只是一个奇怪的.

谢谢.DS

tli*_*kos 42

View::make函数有3个参数,根据文档是:

public View make(string $view, array $data = array(), array $mergeData = array())
Run Code Online (Sandbox Code Playgroud)

在你的情况下,这compact('selections')第四个参数.它没有传递给视图,laravel抛出异常.

另一方面,您可以使用任意数量的with() 时间.因此,这将工作:

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

->with(compact('fixtures'))

->with(compact('teams'))

->with(compact('selections'));
Run Code Online (Sandbox Code Playgroud)

  • 或者` - > with(compact('fixtures','teams','selections'))` (32认同)
  • 或者 `return view('gameworlds.mygame', ["fixtures"=>$fixtures,...]);` (2认同)

j5D*_*Dev 14

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

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

return View::make('gameworlds.mygame', compact(array('fixtures', 'teams', 'selections')));
Run Code Online (Sandbox Code Playgroud)

或者,如果您使用PHP> 5.4

return View::make('gameworlds.mygame', compact(['fixtures', 'teams', 'selections']));
Run Code Online (Sandbox Code Playgroud)

这是更整洁,在查看应用程序的功能时仍然允许可读性;)


Jos*_*tiz 10

我能够使用

return View::make('myviewfolder.myview', compact('view1','view2','view3'));
Run Code Online (Sandbox Code Playgroud)

我不知道是不是因为我使用PHP 5.5它很棒:)


Nad*_*smi 7

Laravel 框架 5.6.26

返回多个数组然后我们compact('array1', 'array2', 'array3', ...)用来返回视图。

viewblade 是前端(视图)刀片。

return view('viewblade', compact('view1','view2','view3','view4'));
Run Code Online (Sandbox Code Playgroud)

  • 请在您的代码中添加说明。纯代码解决方案是非常无用的。 (2认同)