laravel @include with {section in

时间:2017-03-02 14:46:25

标签: laravel laravel-5.2

我有一个简单的主要布局:

<!DOCTYPE html>
<html>
<head>
    <title>Title</title>
    @yield('style')
</head>

<body>
@include('layouts.frontend.partials.slider')
@yield('javascript')
</body>
</html>

layouts.frontend.partials.slider

@section('style')
    <link rel="stylesheet" type="text/css" href="mystyle.css">
@append

@section('javascript')
<script></script>
@append

<div class="swiper-container">
    <div class="swiper-wrapper">
        <div class="swiper-slide" data-swiper-autoplay="1000">Slide 1</div>

        <div class="swiper-slide" data-swiper-autoplay="1000">Slide 2</div>

        <div class="swiper-slide" data-swiper-autoplay="1000">Slide 3</div>
    </div>

    <div class="swiper-pagination">&nbsp;</div>

    <div class="swiper-button-prev">&nbsp;</div>

    <div class="swiper-button-next">&nbsp;</div>
</div>

@section('style')在包含文件中正常工作时,@section('javascript')将被忽略... 我已经将两个文件(主要和包含)减少到最小,并且交换了样式和javascript的位置没有任何区别

似乎有效的方法是从@yield('style')改为身体,如:

<!DOCTYPE html>
<html>
<head>
    <title>Title of the document</title>

</head>

<body>
@include('layouts.frontend.partials.slider')
@yield('javascript')
@yield('style')
</body>

也许不允许在包含文件中包含@section

我想要存档的是多个部分包含它自己的CSS和javascript包括

由于

2 个答案:

答案 0 :(得分:0)

这是另一种方法,这很好,因为你有一些灵活性。

您创建主模板,放置主文件

<强> master.blade.php

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <link rel="stylesheet" href="">

    @section('css')
        <!-- some master css here -->
    @show

</head>
<body>
    @section('navbar')
        @include('common.navbar')
    @show

    @yield('content')        

    @include('common.footer')

    @section('js')
        <!-- some js here -->
    @show   
</body>
</html>

其他孩子扩展了主人,你将拥有所有的布局,并可以自定义你想要的东西:

儿童刀片

@extends('master')

@section('css')
    @parent
    <!-- more css -->
@endsection

@section('navbar')
    @parent
@endsection

@section('content')

<!-- Main content goes here -->

@endsection

@section('js')
    <!-- replace js and add my own -->
    <!-- others js -->
@endsection

答案 1 :(得分:0)

您是否尝试扩展子刀片文件以使用主模板?

layouts.frontend.partials.slider的顶部你放了@extends('layout.master')(或主模板的路径是什么?)

这可能是由您包含文件的顺序引起的问题。一个更简单的解决方案是在主模板中使用@yield('slider')并简单地将滑块内容包装在@section('slider')中并删除@include...吗?