Laravel Blade没有显示部分

时间:2017-02-03 20:30:18

标签: laravel include blade yield sections

我遇到了Blade显示一个部分的麻烦。这是我的主要布局文件:

<!DOCTYPE html>
<html lang="en">
    <!-- Include Header -->
    @include('layouts.header')
    <body class="index-page">
        <!-- Include Navigation -->
        @include('layouts.navigation')
        <div class="wrapper">
                @include('layouts.banner')
                <div class="main main-raised">
                    <!-- Include Content -->
                    @yield('content')
                </div>      
        </div>
    <!-- Include Footer -->
    @include('layouts.footer')
    <!-- Include Modals -->
    @include('layouts.modals')
    <!-- Include Scripts -->
    @include('layouts.scripts')
    </body>
</html>

这是layouts.header文件:

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport">

    <!-- CSRF Token -->
    <meta name="csrf-token" content="{{ csrf_token() }}">

    <title>Title</title>

    <!-- Styles -->
    <link href="/assets/css/app.css" rel="stylesheet">
    @yield('styles')

    <!-- Fonts -->
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
    <link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css">

    <!-- Scripts -->
    <script>
        window.Laravel = <?php echo json_encode([
            'csrfToken' => csrf_token(),
        ]); ?>
    </script>
    @yield('header')
</head>

最后,导航文件:

        @if (Auth::user())
        @section('styles')
            <link href="/assets/css/vendor/wizard.css" rel="stylesheet">
            <link href="/assets/css/vendor/bootstrap-select.css" rel="stylesheet">
            <link href="/assets/css/vendor/summernote.css" rel="stylesheet">
        @endsection
        @endif

        <nav class="navbar navbar-fixed-top navbar-color-on-scroll navbar-
           <!-- A lot of boring code here -->
        </nav>
@section('modals')
    @if (Auth::user())
        @include('layouts.modals.addonupload')
    @else
        @include('layouts.modals.login')
        @include('layouts.modals.register')
        @include('layouts.modals.reset')
    @endif
@endsection

@section('scripts')
    @if (Auth::user())
        @include('layouts.modals.js.addonupload')
    @endif
@endsection

所以,理论上,我在顶部的layouts.navigation中定义的css文件应该包含在我产生它们的标题中。但他们不是出于某种原因。

请注意,我在导航工作底部包含的模态符合预期。此外,我之前有过这个工作。但我在另一个负责内容的视图中有css部分(现在在导航文件中)。我所做的就是将样式部分从内容视图文件移动到导航文件中。

背景是这样的:我有一个需要某些css和js文件的模态。我希望只要用户登录就在每个视图上提供该模态。我不想将它们硬编码到标题中,因为如果用户没有登录则我不需要它们。再次,模态和底部的脚本部分工作正常。只是样式部分没有包含在标题中。有谁知道为什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

如果您想有条件地使用某些css和javascript,我建议您使用@ push 这样,您可以尽可能地包含资源。

e.g。的 scripts.blade.php

<script src="{{ secure_asset('bower\jquery\dist\jquery.min.js') }}"></script>
<script src="{{ secure_asset('bower\materialize\dist\js\materialize.min.js') }}"></script>

@stack('scripts')

答案 1 :(得分:0)

如果将代码更改为以下内容会有所不同吗?

@section('styles')
    @if (Auth::user())
        <link href="/assets/css/vendor/wizard.css" rel="stylesheet">
        <link href="/assets/css/vendor/bootstrap-select.css" rel="stylesheet">
        <link href="/assets/css/vendor/summernote.css" rel="stylesheet">
    @endif
@endsection

@if - @section声明你的“模态”和“脚本”部分,根据你的说法,它可以正常使用。