繁体   English   中英

Laravel 4. *至5. *,将视图嵌套在Controller中

[英]Laravel 4.* to 5.*, nesting views in Controller

截止到目前,我已经将Laravel运行环境更新为最新版本。 回到Laravel 4. *,我能够执行以下操作:

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

但似乎现在失败了。 我已经阅读了很多文章,尝试了所有看起来合理的事情,但我没有发现任何适合我的情况的东西。 链接的尝试的努力可以在这篇文章的底部找到。 以下是我尝试使用的代码。

我收到的错误来自“找不到类'App \\ Http \\ Controllers \\ View'”的错误-当我在控制器中添加Use 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的所有操作似乎都由于deprecation(?)而失败。 https://laravel.io/forum/03-19-2014-simply-loading-multiple-views

尝试Laravel 4:在布局内部嵌套视图,但要包含数据

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

每次都失败。

Laravel不能很好地从控制器定义默认布局 ,因此我认为也已弃用。

如何在Blade模板中包括子视图? 将无法正常工作,因为我正在寻求即时执行此操作

当我尝试以下操作时, 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');
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM