laravel compact() 和 ->with()

2022-01-08 00:00:00 php laravel-4

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

I have a piece of code and I'm trying to find out why one variation works and the other doesn't.

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

这让我可以按预期生成赛程、球队和选择的数组视图.

This allows me to generate a view of arrays for fixtures, teams and selections as expected.

然而,

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

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

does not allow the view to be generated properly. I can still echo out the arrays and I get the expected results but the view does not render once it arrives at the selections section.

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

It's oké, because I have it working with the ->with() syntax but just an odd one.

谢谢.搜索引擎

推荐答案

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

The View::make function takes 3 arguments which according to the documentation are:

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

在您的情况下, compact('selections') 是 4th 参数.它不会传递给视图,并且 laravel 会抛出异常.

In your case, the compact('selections') is a 4th argument. It doesn't pass to the view and laravel throws an exception.

另一方面,您可以使用 with() 任意次数.因此,这将起作用:

On the other hand, you can use with() as many time as you like. Thus, this will work:

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

->with(compact('fixtures'))

->with(compact('teams'))

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

相关文章