Laravel 4.* 到 5.*,在 Controller 中嵌套视图
Posted
技术标签:
【中文标题】Laravel 4.* 到 5.*,在 Controller 中嵌套视图【英文标题】:Laravel 4.* to 5.*, nesting views in Controller 【发布时间】:2017-07-27 01:46:02 【问题描述】:截至目前,我已将 Laravel 运行环境更新为最新版本。回到 Laravel 4.*,我能够执行以下操作:
$this->layout->content = View::Make('users.login');
但现在看来,它失败了。我浏览了很多帖子,尝试了所有看似合理的方法,但我想出的绝对没有适合我的情况。可以在这篇文章的底部找到尝试努力的链接。下面是我要开始工作的代码。
我收到的错误范围来自“找不到类 'App\Http\Controllers\View'” - 当我将 use 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? 不起作用,因为我正在寻找即时执行此操作
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]);
【问题讨论】:
【参考方案1】:好吧,有几件事你做错了。
首先,如果您想在布局中渲染视图,您通常会使用@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');
【讨论】:
我正在使用视图功能,在工作版本中,所以这不是问题。帖子中提到的是使功能像以前一样工作的旧方法和经过尝试的方法。至于主文件,以前是通过控制器完成的,现在完全是通过刀片界面完成的……? Welp,通过刀片脚本完成这一切似乎可以解决问题,尽管这是我希望解决的问题并且只更改控制器......哦,好吧。 +1 给你! 嗯,这是记录在案的方式。显然刀片最终会编译为 PHP,因此您可以查看源代码并查看是否可以通过控制器中的 View 对象来代替。以上是关于Laravel 4.* 到 5.*,在 Controller 中嵌套视图的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 4.* 到 5.*,在 Controller 中嵌套视图