@yield在主页上工作,但在其他使用相同布局的页面上不工作

时间:2020-07-07 16:36:18

标签: laravel laravel-blade

真的在这上面挠头了。我希望能看到我的错误。

我在每个页面上都有一个标题,但是标题仅显示在home.blade.php上,而其他页面则没有。

master.blade.php

<!DOCTYPE html>
<html lang="{{ app()->getLocale() }}">
    <head>
        <meta charset="utf-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
        <meta name="csrf-token" content="{{ csrf_token() }}" />
        <title>@yield('title')</title>
        @stack('styles')
    </head>
    <body class="bg-light">
        <div class="container-fluid h-100">
            @yield('app')
        </div>
        @include('sweetalert::alert')
        {{ Session::forget('alert') }}
        @stack('scripts')
    </body>
</html>

app.blade.php

@extends('layout.master')

@prepend('styles')
    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css">
    <link rel="stylesheet" type="text/css" href="{{ URL::asset('css/overrides.css') }}" />
@endprepend

@section('app')
        <div class="row">
            <div class="col-12 no-padding">
                @include('layout.includes.header')
            </div>
        </div>
        <div class="row h-100">
            <div class="col-12">
                <!-- Begin nav/content row --> 
                <div class="row h-100">
                    <div id="sidebar-wrapper" class="visible">
                        @include('layout.includes.nav')
                    </div>
                    <!-- Begin main column -->
                    <div class="col content" style="overflow-x:auto;">
                        @if (Request::path() === '/')
                        <div class="row no-padding">
                            <div class="col d-none d-sm-block">
                                <h4>@yield('content-heading')</h4> <!-- [my @yield directive is here] -->
                            </div>
                            <div class="col flex-grow-1">
                                @include('layout.includes.searchform')
                            </div>
                        </div>
                        @endif
                        <div class="row no-padding inner-box shadow p-3 mb-5 bg-white rounded">
                            @yield('content')
                        </div>
                    </div>
                    <!-- END main column-->
                </div>
                <!-- END nav/content row-->
            </div>
        </div>
@endsection

@prepend('scripts')
    @include('layout.js.footer-js')
    @yield('form-js')
@endprepend

home.blade.php

@extends('layout.app')

@section('title', 'Asset Management')

@section('content-heading', 'View All Assets') //This works

@section('content')

                            <div class="table-responsive">
                                <table class="table table-striped text-nowrap">
                                <caption>Recently Added Assets</caption>
                                    <thead>
                                        <tr>
                                            <th scope="col">Tag #</th>
                                            <th scope="col">Type</th>
                                            <th scope="col">Device</th>
                                            <th scope="col">Serial #</th>
                                            <th scope="col">Assigned</th>
                                            <th scope="col">To</th>
                                            <th scope="col">Status</th>
                                        </tr>
                                    </thead>
                                    <tbody>
                                @foreach ($assets as $asset)
                                        <tr>
                                            <td>{{ $asset->asset_tag }}</td>
                                            <td>{{ $asset->cat_name }}</td>
                                            <td>{{ $asset->man_name }} {{ $asset->model_name  }}</td>
                                            <td>{{ $asset->serial  }}</span></td>
                                            <td>{{ \Carbon\Carbon::parse($asset->assign_date)->format('D M d, Y g:iA')  }}</td>
                                            <td>{{ $asset->name  }}</td>
                                            <td>{{ $asset->status }}</td>
                                        </tr>
                                @endforeach
                                    </tbody>
                                </table>
                            </div>

@endsection

@section('form-js')
    
@endsection

@push('scripts')

@endpush

我的其他页面的布局都与home.blade.php相同,例如:

@extends('layout.app')

@section('title', 'Checkout Asset')

@section('content-heading', 'Checkout Asset') //Does not output to template

@section('content')
Content here...
@endsection

@push('scripts')
@endpush

为什么<h4>@yield('content-heading')</h4>仅在home.blade.php上工作?

1 个答案:

答案 0 :(得分:1)

显示GenerationType的代码包装在:

@yield('content-heading')

将显示内容限制为该网址。

:)