Laravel-HTML呈现在错误的位置

时间:2019-06-09 21:50:54

标签: laravel laravel-blade

我是Laravel的新手,我还不确定一切如何工作。我试图通过将appart代码包括在页面的开头来将其分成不同的部分,然后在该页面中创建一个hero部分,然后再添加一些html。

所有内容都会显示,但是页面上的html代码正在其他所有内容之上呈现。

该线程看起来可能是未关闭的东西,但据我所知,一切都在正常进行

Including header in wrong place Laravel 4

@include('blocks/scripts')

@extends('blocks/hero')

@section('title')
text here
@stop

@section('subtitle')
another text
@stop

<div class="container">
        <div class="row">
            <div class="col-12">
                   more text
            </div>
            <div class="col-6">
                <h2 class="text-center">header</h2>
                <p class="text-center">more text</p>
            </div>
            <div class="col-6">
                    <h2 class="text-center">header</h2>
                    <p class="text-center">more text</p>
            </div>
        </div>
    </div>

@include('blocks/footer')

这是文件。在“脚本”之后紧接着呈现HTML块,然后是“页脚”,然后显示“英雄”。

顺序应为脚本->英雄-> html->页脚

@include('blocks/scripts') just has html code
@extends('blocks/hero') has  @yield('title') and @yield('subtitle')
@include('blocks/footer') just text

2 个答案:

答案 0 :(得分:0)

在刀片文件中,@section('something')之外的每个直接HTML都将呈现在文件顶部。

您需要将@yield('something')放入扩展文件中,然后像使用 title 那样用@section('something')@endsection('something')包装HTML代码字幕

答案 1 :(得分:0)

我更改了一些模板的名称,因为很难理解您在注释中添加的代码。但是我认为它可以帮助您组织代码。

具有html,head和body标签的模板不是要包含的模板,而是从中扩展其他模板并利用yield的模板。例如@yield ('main-content')

blocks / main.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">
    </head>
    <body>
        @yield('main-content')
    </body>
</html>

blocks / hero.blade.php
您可以从主模板扩展此模板,然后使用@yield('main-content')将内容添加到@section('main-content')

@extends('blocks/main')
@section('main-content')
<div class="container-fuid mx-0 wlgx_hero"> 
    <div class="row"> 
        <div class="col-12"> 
            @include('blocks/header') 
            <section id="hero_text"> 
                <h1 class="text-center text-white py-5">
                    @yield('title')
                </h1> 
                <hr class="purple_line pb-3"> 
                <section id="subtitle"> 
                    <p class="text-center">
                        @yield('subtitle')
                    </p> 
                </section> 
            </section> 
        </div> 
    </div> 
</div>
@yield('hero-content')
@endsection('main-content')

您问题中的刀片(我不知道名字)可以依次从英雄延伸并填充其产量:

@extends('blocks/hero')

@section('title')
text here
@stop

@section('subtitle')
another text
@stop

@section('hero-content')
<div class="container">
    <div class="row">
        <div class="col-12">
            more text
        </div>
        <div class="col-6">
            <h2 class="text-center">header</h2>
            <p class="text-center">more text</p>
        </div>
        <div class="col-6">
            <h2 class="text-center">header</h2>
            <p class="text-center">more text</p>
        </div>
    </div>
</div>
@stop

最后一个是必须从路由或控制器返回的视图,以便一切正常。

希望有帮助