我已将Laravel运行环境更新到截至此日期的最新版本。回到Laravel 4. *,我能够做到这样的事情:
$this->layout->content = View::Make('users.login');
但现在看来,失败了。我已经经历了很多帖子,尝试了一切看似合理的事情,而且我提出的绝对没有任何对我的案子有用的东西。可以在本文的底部找到尝试过的努力的链接。下面是我试图开始工作的代码。
我收到的错误来自" Class' App \ Http \ Controllers \ View'找不到" - 当我向控制器添加使用View时解决了这个问题,但这会导致另一个错误。我收到的另一个错误是"尝试分配非对象的属性"当我添加使用View;位。
基本理念是:
我有两个视图,一个是基本页面布局(layouts.main),另一个包含我希望嵌入到我的主布局(user.login)中的用户登录。它们都是刀片格式文件,如果我尝试它们,它们彼此独立地加载,我根本无法将两个文件嵌套在控制器下面。我尝试这样做,以便主文件可以就是这样,只有这个内容部分在页面视图之间发生变化。
控制器功能:
public function getLogin() {
$this->layout->content = View::Make('users.login');
}
刀片文件部分:
<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]);
答案 0 :(得分:4)
好的,有几件事你做错了。
首先,如果要在布局中呈现视图,通常会使用@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');
}