【问题标题】:How to return multiple views in a Laravel controller? [duplicate]如何在 Laravel 控制器中返回多个视图? [复制]
【发布时间】:2021-11-20 15:29:09
【问题描述】:

在 Laravel 的控制器中,我有这个:

public function index()
{
    $users = User::orderBy('name', 'asc')->paginate(13);
    $users2 = User::all();

    return view('contatos.index')->with('users', $users);
    return view('auth.register')->with('users', $users2);
}

我知道不对,只是为了证明我的逻辑。有没有办法将这两个回报合并为一个回报?或者甚至更短的代码形式?

【问题讨论】:

  • 返回其中一个并在您返回的那个中包含另一个怎么样?
  • 但是我究竟该如何做这个包含呢?
  • 返回 2 个视图是没有意义的。您应该返回 1 个视图,并在该视图中包含您需要的任何子视图。
  • @Mandy9019 我添加了一个答案你可以查看。

标签: php laravel view controller return


【解决方案1】:

您可以使用 @include 指令在单个视图中包含多个视图:

combined.blade.php:

@include('contatos.index')
@include('auth.register')

然后在你的控制器中:

public function index()
{
    $users = User::orderBy('name', 'asc')->paginate(13);
    $users2 = User::all();

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

include 的变体有很多,比如includeIfincludeWhen,文档中都有描述:https://laravel.com/docs/8.x/blade#including-subviews

然而,要理解的关键点是你总是只返回一件事(在你的情况下,一个视图)。

这个视图可以由多个部分组成,这个合成工作就是 Blade 的角色。

【讨论】:

    猜你喜欢
    • 2015-10-15
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    • 2016-03-23
    • 1970-01-01
    • 2012-11-07
    • 1970-01-01
    • 2022-01-10
    相关资源
    最近更新 更多