在Laravel 5中的布局中嵌套布局

时间:2016-04-07 20:43:04

标签: laravel laravel-5 laravel-5.2

我的问题是关于在Laravel中嵌套布局。我试图这样做,如下所示,这在大多数情况下有效但在其他情况下会产生不必要的结果。

\\ MasterLayout

--code for header, navbar, etc.

@yield('content)

@yield('scripts)

\\ SubLayout

@extends('layouts.MasterLayout')

@section('content')
    <div>
        @yield('sidebar')

        @yield('main')
    </div>
@endsection

@section('scripts')
    <script>scripts needed in all the relevant views</script>

    @yield('scripts.sub')
@endsection

\\浏览

@extends('layouts.SubLayout')
--some code

@section('sidebar')
    --sidebar code
@endsection

@section('main')
    --main code
@endsection

@section('scripts.sub')
    <script>scripts only needed in this view</script>
@endsection

就我自己而言,我还有一层嵌套(子布局)。我的控制器只是重定向到视图而不做任何特殊操作。如,

public function start()
{
    return view('createproject/start');
}

在许多情况下,这种方法效果很好,但存在一些问题。例如,我不能简单地在视图中需要的SubLayout中包含php文件。这些包括必须进入他们正在使用它们的文件,以获得对其功能的访问。此外,将<div></div>标记直接放在@yield之外有时会产生与将它们直接放在@yield指向的@section内不同的效果。此外,当页面工作时,我得到了一些奇怪的警告信息,例如我已经多次声明DOCTYPE或者根本没有,当时我都不知道。因此,虽然嵌套方法似乎有效,但它有点笨拙,我不相信它代表了最佳实践。

因此,我对社区的问题是这样的:我建议的嵌套布局方法是否合适(可能有一些解决我遇到的问题的注意事项)或者它是否表现出一些基本问题/混淆?

我在这里找到了一个相关的Stack Q&amp; A Laravel multiple nested views但是在那里引用的nest()函数不再在Laravel文档的更新版本中讨论过了(我错过了它) ?),所以我想知道它是否仍然需要。

1 个答案:

答案 0 :(得分:0)

您可以为此使用组件和插槽 components-and-slots