Laravel 头部内容出现在 body 标签中
Posted
技术标签:
【中文标题】Laravel 头部内容出现在 body 标签中【英文标题】:Laravel head content appearing in body tag 【发布时间】:2014-10-27 02:18:26 【问题描述】:我是 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
的区别是什么?
【问题讨论】:
页面其他地方可能有问题,您的浏览器正在重组。如果您查看源代码,您的 head 标签中的项目实际上可能在 head 标签中。您还需要一个@stop
在您的部分标签之后。这可能是导致问题的原因
哇,也帮帮我
【参考方案1】:
我们遇到了同样的问题,但原因不同。在@section('body') 之前的源中有两个@include。我们不知道为什么这会导致标题问题,但确实如此。原来是
@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")
这就解决了这个问题。
【讨论】:
【参考方案2】:实际上你应该使用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 获取详细信息。您认为通过视图或控制器发送诸如标题数据之类的东西更好吗(作为回报 View::make('viewname')->with('title', $title); 而不是使用 ' @yeild' '@section' 等? 是的,它更有活力。 对不起,您是指通过模板还是视图? 从控制器到视图。【参考方案3】:在 layout.blade.php 中试试这个。你正在扩展这个刀片模板,所以你应该在<title>
标签中使用@yield('title')
,并且你应该在每个@section
标签中使用@stop
<!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>
【讨论】:
谢谢,我错过了@stop以上是关于Laravel 头部内容出现在 body 标签中的主要内容,如果未能解决你的问题,请参考以下文章