Laravel 4.* 到 5.*,Controller 中嵌套视图

Laravel 4.* to 5.*, nesting views in Controller

我已将我的 Laravel 运行 环境更新到截至该日期的最新版本。回到 Laravel 4.*,我可以做类似的事情:

$this->layout->content = View::Make('users.login');

但现在看来,那是失败了。我已经经历了很多 posts,尝试了一切看起来合理的事情,但我没有想出任何适合我的案例。可以在此 post 的底部找到尝试过的链接。下面是我试图开始工作的代码。

我收到的错误范围从 "Class 'App\Http\Controllers\View' not found" - 当我将 use View 添加到控制器时已解决,但这会导致另一个错误。我收到的另一个错误是 "Attempt to assign property of non-object" 当我添加 use View;少量。

基本思路是这样的:

我有两个视图,一个是基本页面布局 (layouts.main),另一个包含我希望嵌入到主布局中的用户登录 (user.login)。它们都是 blade 格式文件,如果我尝试这样做,它们会彼此独立加载,我根本无法将这两个文件嵌套在控制器下。我正在尝试这样做,这样主文件就可以了,只有这个内容部分在页面视图之间发生变化。

控制器函数:

public function getLogin() {
     $this->layout->content = View::Make('users.login');
}

Blade 文件的部分:

    <div class="content roundBorder wrapper">
        @yield($content)
    </div>

尝试过的解决方案: 由于弃用(?),使用 View::make 的任何内容似乎都失败了 前任。 https://laravel.io/forum/03-19-2014-simply-loading-multiple-views

正在尝试 Laravel 4: Nest view inside layout with data

return $layout->nest('content','user.login');

每次都失败。

Laravel define default layout from controller in good way 没有用,所以我认为它也被弃用了。

How to include a sub-view in Blade templates? 行不通,因为我想即时执行此操作

当我尝试以下操作时,

https://laracasts.com/discuss/channels/general-discussion/laravel-5-this-layout-content-not-working?page=1 对我不起作用:

$content = view('user.login');    
return view($this->layout, ['content' => $content]);

好的,您做错了几件事。

首先,如果你想在布局中渲染一个视图,你通常会使用 @extends Blade 指令。参见 https://laravel.com/docs/5.4/blade#template-inheritance

在您的 layouts/main.blade.php 文件中:

@yield('body')

在您的 users/login.blade.php 文件中:

@extends('layouts.main')

@section('body')
    <!-- your markup -->
@stop

最后,要在 Laravel 控制器中呈现视图,您可以使用 view() 辅助函数。

public function getLogin()
{
    return view('users.login');
}