Laravel - 传递多个变量进行查看

2022-08-30 08:13:05

我有这个网站,其中一个页面从数据库中创建了一个简单的人员列表。我需要将一个特定人员添加到我可以访问的变量中。

如何修改该行以同时将$ms变量传递给视图?return $view->with('persons', $persons);

    function view($view)
    {
        $ms = Person::where('name', 'Foo Bar');

        $persons = Person::order_by('list_order', 'ASC')->get();

        return $view->with('persons', $persons);
    }

答案 1

只需将其作为数组传递:

$data = [
    'name'  => 'Raphael',
    'age'   => 22,
    'email' => 'r.mobis@rmobis.com'
];

return View::make('user')->with($data);

或者像@Antonio提到的那样,将它们链接起来。


答案 2

这是你如何做到的:

function view($view)
{
    $ms = Person::where('name', '=', 'Foo Bar')->first();

    $persons = Person::order_by('list_order', 'ASC')->get();

    return $view->with('persons', $persons)->with('ms', $ms);
}

你也可以使用 compact()

function view($view)
{
    $ms = Person::where('name', '=', 'Foo Bar')->first();

    $persons = Person::order_by('list_order', 'ASC')->get();

    return $view->with(compact('persons', 'ms'));
}

或者用一行来做:

function view($view)
{
    return $view
            ->with('ms', Person::where('name', '=', 'Foo Bar')->first())
            ->with('persons', Person::order_by('list_order', 'ASC')->get());
}

或者甚至将其作为数组发送:

function view($view)
{
    $ms = Person::where('name', '=', 'Foo Bar')->first();

    $persons = Person::order_by('list_order', 'ASC')->get();

    return $view->with('data', ['ms' => $ms, 'persons' => $persons]));
}

但是,在这种情况下,您必须通过以下方式访问它们:

{{ $data['ms'] }}

推荐