Laravel头部内​​容出现在body标签中

时间:2014-09-02 18:17:57

标签: php html laravel laravel-4

我是Laravel的新手,我正在尝试为我正在制作的新网站创建我的第一个布局。

我遇到的问题是<head>中我想要的内容进入<body><head>为空。

我有:

layout.blade.php

<!DOCTYPE html>
<html>
    <head>
        <title>@section('title')</title>
        {{ HTML::style('https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css'); }}
    </head>

    <body>
        <h1>@yield('h1')</h1>
        @yield('content')
        {{ HTML::script('js/jquery-1.11.1.min.js'); }}
        {{ HTML::script('https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js'); }}
    </body>
</html>

users.blade.php

@extends('layouts.layout')

@section('title')
    Users Page - 1

@section('h1')
    <?PHP echo $h1;?>
@stop

我哪里错了?

在我看来,@yeild@section中的差异是什么?

3 个答案:

答案 0 :(得分:3)

实际上你应该使用yield来转储内容,例如,如果你有像这样的桅杆布局:

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
    <body>
        @yield('content')
    </body>
</html>

然后您可以在您的孩子视图中使用以下内容:

extends('layouts.master')

@section('content')
   Everything within this section will be dumped
   in to `@yield('content')` in your master layout.
@stop

您应该使用@stop来关闭该部分的任何部分。也许你可以尝试这样的事情:

<!DOCTYPE html>
<html>
    <head>
        <title>{{ $title }}</title>
        {{ HTML::style('https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css') }}
    </head>
    <body>

        @yield('content')

        {{ HTML::script('js/jquery-1.11.1.min.js'); }}
        {{ HTML::script('https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js'); }}
    </body>
</html>

controller您可以传递标题:

return View::make('viewname')->with('title', $title);

详细了解Laravel website上的Templates

答案 1 :(得分:0)

layout.blade.php 中尝试此操作。您正在扩展此刀片式服务器模板,因此您应该在@yield('title')代码中使用<title>,并且@stop@section

<!DOCTYPE html>
<html>
    <head>
        <title>@yield('title')</title>
        {{ HTML::style('https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css'); }}
    </head>

<body>
    <h1>@yield('h1')</h1>
    @yield('content')
    {{ HTML::script('js/jquery-1.11.1.min.js'); }}
    {{ HTML::script('https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js'); }}
</body>

答案 2 :(得分:0)

虽然原因不同,但我们遇到了同样的问题。在@section('body')之前,有两个@includes来自源代码。我们不知道为什么会导致标题问题,但确实如此。这是

@extends('layouts.plane')
@include("layouts.modal-quote-create")
@include("layouts.modal-mulch-types")
@section('body')

我们将其更改为:

@extends('layouts.plane')
@section('body')   
@include("layouts.modal-quote-create")
@include("layouts.modal-mulch-types")

并且处理了这个问题。