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

时间:2016-09-21 13:48:47

标签: php laravel blade laravel-blade laravel-5.3

如何使用Laravel刀片模板引擎的 @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>部分。

它无法按预期正常工作。

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

1 个答案:

答案 0 :(得分:0)

你不需要做

@extends('master')

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

在您的相应页面中,以便加载特定于页面的样式表。

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

为此,你要喊出这些页面的路线或预期的网址格式,然后是要加载的相应样式表。

您可以在 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 {{1>访问的网页内容加载的样式表<}> users-css.blade.php

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

transactions

使用通配符 @if(Request::is('transactions*'))

要将给定资源加载到网页的*部分以外的位置,只需使用相同的方法并根据需要进行调整。

要使用 <head> 中的 @include() 加载特定于页面的资源,请使用此方法(在 {中{1}} 文件)

master.blade.php

其中 master.blade.php 应包含您为满足您的要求而加载的相应资源的条件,如下所示:

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

作为 styles.blade.php 的内容。