2014-09-02 38 views
4

我是Laravel的新手,我正在嘗試爲我製作的新網站創建我的第一個佈局。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在我看來?

+0

可能有其他地方在頁面上成爲一個問題,您的瀏覽器剛剛重組。如果您查看源代碼,頭標記中的項目可能實際上位於頭標記中。您也需要在段標籤後加上@ @ stop。這可能是導致問題 – user3158900 2014-09-02 18:40:39

+0

哇,幫我以及 – ronydavid 2017-11-03 06:12:19

回答

0

試試這個layout.blade.php。您正在擴大這一刀模板,所以你應該<title>標籤使用@yield('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> 

+0

謝謝,我錯過了@stop – imperium2335 2014-09-03 08:50:05

2

其實你應該使用yield傾倒出的內容,例如,如果你有一個mastwer佈局,如:

extends('layouts.master') 

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

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

然後你可以在你的孩子鑑於這樣的使用

對於任何部分,您應該使用@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); 

瞭解更多關於在上TemplatesLaravel website

+0

+1的詳細信息。你認爲最好的做法是通過視圖或控制器發送諸如標題數據之類的東西(如返回View :: make('viewname') - > with('title',$ title);而不是使用' @yeild''@section'etc? – imperium2335 2014-09-03 08:54:32

+0

是的,它更具動態性 – 2014-09-03 16:40:42

+0

對不起,您是指通過模板或視圖? – imperium2335 2014-09-03 16:56:54

相關問題