Laravel在所有页面中都有一个布局

时间:2015-08-03 11:41:55

标签: php laravel

如何为所有页面制作一个布局?例如,我有:

带有标题的

header.blade.php文件。

<!doctype html>
<head>
<meta charset="utf-8">
<!-- Latest compiled and minified CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">

    <!-- Optional theme -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css">

    <!-- Latest compiled and minified JavaScript -->
   <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js">
</script>
</head>
<body>

在login.blade.php中:

@extends('layouts.header')
<form method="POST" action="/auth/login">
    {!! csrf_field() !!}

    <div>
        Email
        <input type="email" name="email" value="{{ old('email') }}">
    </div>

    <div>
        Password
        <input type="password" name="password" id="password">
   </div>

    <div>
        <input type="checkbox" name="remember"> Remember Me
    </div>

    <div>
        <button type="submit">Login</button>
    </div>
</form>
</body>

但是当我打开登录页面后,我的标题会在登录后打印出来吗?为什么? 像这样:     Error

对于所有页面,使用一个页眉/页脚可能更简单吗?例如:

@extends('layouts.header')
~~somethingfile.php~~
@extends('layouts.footer')

提前致谢

2 个答案:

答案 0 :(得分:3)

您通常会创建一个这样的布局文件:

<html>
    <head>
        <title>App</title>
    </head>
    <body>
        @yield('header')

        <div class="container">
            @yield('content')
        </div>

        @yield('footer')

    </body>
</html>

所有其他文件都使用@extends('layout.layout')扩展此文件,并在@section中拥有自己的内容。

 @section('content')
      // content
 @endsection

  @section('header')
       // content
  @endsection

取决于目的,等等。

查看documentation

答案 1 :(得分:2)

在头文件内容插入的最后  @yield( '内容')

然后你可以写这个

@extends( 'layouts.header')      @section( '内容')         〜出头〜      @停    @extends( 'layouts.footer')

我认为这可能对你有所帮助。