【问题标题】:Laravel Blade @yield is not displaying the @sectionLaravel Blade @yield 没有显示 @section
【发布时间】:2017-05-16 21:53:57
【问题描述】:

我的文本显示在两个位置(一个用于台式机,一个用于移动设备)。因此,不必每次都将文本放置在两个位置,我认为我可以只创建一个部分并使用@yield 在每个位置显示文本。我没有收到任何错误,但内容并没有像我预期的那样被写入 dom。

这是刀片模板:

<nav class="blue">
    <div class="nav-wrapper">
        <div class="container">
            <ul class="side-nav" id="mobile-side-nav">
                @yield('navbar-dropdown')
            </ul>
        </div>
    </div>
</nav>
<ul id="nav-dropdown" class="dropdown-content">
    @yield('navbar-dropdown')
</ul>

{{-- List of items to place in the ul's --}}
@section('navbar-dropdown')
    <li><a class="blue-text waves-effect" href="#!">Create Project</a></li>
    <li><a class="blue-text waves-effect" href="#!">Manage Projects</a></li>
    <li class="divider"></li>
    <li><a class="blue-text waves-effect" href="#!">Settings</a></li>
    <li><a class="blue-text waves-effect" href="{{ url('auth/logout') }}">Logout</a></li>
    <li class="divider"></li>
    <li><a class="blue-text waves-effect" href="#!">Help</a></li>
    <li><a class="blue-text waves-effect" href="#!">Report a Problem</a></li>
@endsection

我误解了它的工作原理,还是我做错了?

【问题讨论】:

    标签: php laravel blade laravel-blade


    【解决方案1】:

    @yield 仅在扩展布局时有效。

    最好将narbar-dropdown 部分的内容放在另一个文件中,然后使用包含。

    例如在resources/views/partials/navbar-dropdown.blade.php 创建一个文件并添加:

    <li><a class="blue-text waves-effect" href="#!">Create Project</a></li>
    <li><a class="blue-text waves-effect" href="#!">Manage Projects</a></li>
    <li class="divider"></li>
    <li><a class="blue-text waves-effect" href="#!">Settings</a></li>
    <li><a class="blue-text waves-effect" href="{{ url('auth/logout') }}">Logout</a></li>
    <li class="divider"></li>
    <li><a class="blue-text waves-effect" href="#!">Help</a></li>
    <li><a class="blue-text waves-effect" href="#!">Report a Problem</a></li>
    

    然后在您的布局文件中进行更改:

    @yield('navbar-dropdown')
    

    @include('partials/navbar-dropdown')
    

    希望这会有所帮助!

    【讨论】:

    • 行得通!我也不知道你可以使用/ 作为分隔符我一直使用. 分隔符。谢谢!
    • @GetOffMyLawn 很高兴我能帮上忙!是的,你可以使用任何一个:)
    【解决方案2】:

    我认为您没有扩展布局。当您使用 @yield@section 时,您需要在要扩展的布局中定义 @yield

    这是您的模板文件(称为Laravel/resources/views/layouts/app.blade.php):

    <html>
    <nav class="blue">
        <div class="nav-wrapper">
            <div class="container">
                <ul class="side-nav" id="mobile-side-nav">
                    @yield('navbar-dropdown')
                </ul>
            </div>
        </div>
    </nav>
    <ul id="nav-dropdown" class="dropdown-content">
        @yield('navbar-dropdown')
    </ul>
    </html>
    

    这是您将扩展模板的文件:

    @extends('layouts.app')
    
    @section('navbar-dropdown')
        <li><a class="blue-text waves-effect" href="#!">Create Project</a></li>
        <li><a class="blue-text waves-effect" href="#!">Manage Projects</a></li>
        <li class="divider"></li>
        <li><a class="blue-text waves-effect" href="#!">Settings</a></li>
        <li><a class="blue-text waves-effect" href="{{ url('auth/logout') }}">Logout</a></li>
        <li class="divider"></li>
        <li><a class="blue-text waves-effect" href="#!">Help</a></li>
        <li><a class="blue-text waves-effect" href="#!">Report a Problem</a></li>
    @endsection
    

    希望这行得通!

    【讨论】:

    • 不,我没有扩展布局。它位于另一个布局中的导航布局中。
    猜你喜欢
    • 2018-04-25
    • 2017-05-01
    • 2019-01-15
    • 2021-03-29
    • 2019-04-18
    • 1970-01-01
    • 2017-11-18
    • 2019-09-26
    • 2016-02-27
    相关资源
    最近更新 更多