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? 行不通,因为我想即时执行此操作
当我尝试以下操作时,
$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');
}
我已将我的 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? 行不通,因为我想即时执行此操作
当我尝试以下操作时,$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');
}