【问题标题】:The return of view() in Laravel?Laravel 中 view() 的返回?
【发布时间】:2016-07-12 03:50:34
【问题描述】:

我刚学 Laravel 5.1 框架,发现一个令人费解的问题。 首先,我创建一个名为“Page”的模型,然后创建一个名为“HomeController”的控制器,方法代码如下:

public function index()
{
    return view('home')->withPages(Page::all());
}

我找不到'withPages()'函数,所以我找到辅助函数view()返回\Illuminate\View\View,所以我找到'vendor/laravel/framework/src/Illuminate/View/View.php',有一个“__call()”,所以我明白了。 但是我尝试删除这个功能,我的网站还是正常的。 我找错地方了吗?我很困惑。

【问题讨论】:

  • 你想达到什么目的? withPages() 函数不是真正的函数,正如您已经指出的那样,它是使用 __call() 魔术方法人为调用的。为什么要删除它?
  • Wader 评论的补充:您可以使用模型与数据库表进行交互。之后您可以将这些信息传递给视图。更多型号信息:Eloquent Models
  • 我只是想测试一下!现在我找到了尼克的正确答案。谢谢!

标签: laravel


【解决方案1】:

如果要使用withPages方法,需要在方法中设置变量$pages

所以你的方法看起来像:

public function index()
{
    pages = Page::all();
    return view('home')->withPages($pages);
}

其他两个选项:

public function index()
{
    return view('home')->with('pages', Page::all());
}

public function index()
{
    pages = Page::all();
    return view('home')->with(compact('pages));
}

您可以使用这些方法中的任何一种。

【讨论】:

  • 据我了解,您不需要 $pages 变量。使用->with 之后的部分,您只需定义变量在视图中的命名方式。
  • @J.Eggerstedt 是的,你是对的。在这种情况下有三个选项。我会更新答案。
【解决方案2】:

这就是我的做法-

public function index()
{
   return view()->with('pages', Page::all());
}

【讨论】:

    【解决方案3】:

    ... 有一个“__call()”,所以我明白了。但是我尝试删除这个功能,我的网站还是正常的。我找错地方了吗?我很困惑。

    大概吧。

    Laravel 将其所有核心类“编译”到一个文件中作为性能优化。

    尝试运行php artisan clear-compiled,您的网站应该会开始失败。

    【讨论】:

    • 你解决了我的困惑。非常感谢。我很惊讶这个功能。 Laravel 如何将其所有核心类“编译”到一个文件中?有没有关于它的材料或理论?
    • @xiangfeiai OptimizeCommand 生成编译文件。 bootstrap/autoload.php 是框架加载编译文件的地方。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 2021-04-23
    • 2016-10-29
    • 2016-01-01
    • 2015-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多