返回多个变量以在laravel中查看的最佳方法

Nas*_*din 2 php laravel

我有一个动作方法,它的体内有多个变量,如下所示: -

$bus=Bus::all();
$user=User::all();
$employer=employer::all();
Run Code Online (Sandbox Code Playgroud)

将这些变量对象返回到视图的做法是使用这样的代码

return view('create')->with(compact('bus', $bus))->with(compact('user', $user))->with(compact('employer', $employer));
Run Code Online (Sandbox Code Playgroud)

是否有一种方法可以立即返回此对象,而无需使用所有这些代码

return view('create')->($user,$bus,$emp);
Run Code Online (Sandbox Code Playgroud)

只是我想要的例子.

iCo*_*ers 6

你可以像这样创建一个数组

$data['bus']=Bus::all();
$data['user']=User::all();
$data['employer']=employer::all();
return view('create',['data'=>$data]);
Run Code Online (Sandbox Code Playgroud)


Pep*_*olo 5

你在这里几乎没有选择.

第一种方法是:

with()明确使用并传递数组:

return view('create')->with('data', [
    'bus' => $bus, 
    'user' => $user,
    'employer' => $employer
]);
Run Code Online (Sandbox Code Playgroud)

使用with()并列出您的变量compact():

return view('create')->with('data', compact('bus','user','employer'));
Run Code Online (Sandbox Code Playgroud)

您可以在视图中访问您的对象,例如带有键'bus','user'和'employer'的关联数组$ data.

另一种方法是:

将数组作为第二个参数传递给view()函数:

return view('create', [
    'bus' => $bus, 
    'user' => $user,
    'employer' => $employer
]);
Run Code Online (Sandbox Code Playgroud)

传递一个compact()函数(它将在后面的示例中创建一个类似于幕后的view()函数)作为函数的第二个参数:

return view('create', compact('bus','user','employer'));
Run Code Online (Sandbox Code Playgroud)

如果您以这种方式使用它,您将在视图中获得三个变量$ bus,$ user和$ employer.