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

问题描述 投票:3回答:1

我的问题是关于在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或者根本没有,当时我都不知道。因此,尽管嵌套方法似乎有效,但它有点笨拙,我不相信它代表了最佳实践。

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

我在这里找到了一个相关的堆栈问答:Laravel multiple nested views但是在最近版本的Laravel文档中不再讨论那里引用的nest()函数(我错过了吗?),所以我想知道它是否仍然需要。

laravel laravel-5 laravel-5.2
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.