使用@include 加载页面特定资源

Load page specific resource(s) using @include

如何使用 Laravelblade 模板引擎的 @include 加载页面特定资源?

下面是我的Master布局的内容(master.blade.php):

<head>
    @section('styles')
        {{-- Some Master Styles --}}
    @show
</head>
<body>
    {{-- Header --}}
    @section('header')
        @include('header')
    @show

    {{-- Content --}} 
    @section('content')
        {{-- Content for page is extending this view --}}
    @show

    {{-- Footer --}}
    @section('footer')
        @include('footer')
    @show
</body>

在给定的页面中,我以这种方式使用我的主模板:

@extends('master')

@section('styles')
    @parent
    {{-- Page Stylesheet --}}
@endsection

上面的方法是我用来尝试将我的页面特定样式加载到 <head> 部分的方法。

它没有像预期的那样正常工作。

我也想使用相同的方法在我的页脚中加载其他页面特定资源;我怎样才能有效地做到这一点?

你不需要做

@extends('master')

@section('styles')
    @parent
    {{-- Page Stylesheet --}}
@endsection

在您各自的页面中加载特定于页面的样式表。

您应该为您的 master.blade.php 文件加载特定于页面的样式表,以保持您的代码干燥。

为此,您大声指定此类页面的路径或预期 url 格式,然后加载适当的样式表。

您可以在您的 master.blade.php 文件中这样做:

@section('styles')
    @if(Request::is('transactions/generate-invoice'))
        @include('generate-invoice-css')
    @elseif(Request::is('transactions/users'))
        @include('users-css')
    @endif
@show

其中 generate-invoice-css.blade.php 包含您要为可在 yoursite.com/transactions/generate-invoice[=68= 访问的页面内容加载的样式表] 和 users-css.blade.phpyoursite.com/transactions/users.

对于给定的模式,如:transactions 下页面的相同样式表,您可以这样做:

@if(Request::is('transactions*'))

使用通配符 *.

要将给定资源加载到页面的 <head> 部分以外的位置,只需使用相同的方法并进行适当的调整。

要使用 master.blade.php 中的 @include() 加载页面特定资源,请使用此方法 (在你的 master.blade.php 文件中):

@section('styles')
    @include('styles')
@show

其中 styles.blade.php 应包含您要加载的适当资源满足您的要求的条件,如:

@if(Request::is('transactions/generate-invoice'))
    @include('generate-invoice-css')
@elseif(Request::is('transactions/users'))
    @include('users-css')
@endif

作为你styles.blade.php.

的内容