Laravel教程五 Blade模版简介

在创建blade模版时,需要往里面复制一大段的HTML代码,而每个模版中可能有很多内容是相同的,这时,我们可以利用一个布局模版来完成这些功能。

创建布局模版
我们到视图目录(/resources/views)中创建一个布局模版,这里我们命名为main.blade.php,这里是模版布局的代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.4/css/bootstrap.min.css">
</head>
<body>
    <div class="container">
        @yield('content')
    </div>
</body>
</html>

我们只需要创建一次这个文件,之后所有引用这个模版的文件都会生成一个@yield('content')位置供我们填充内容。我们修改about.blade.php模版

@extends('main')
 
@section('content')
    <h1>About me</h1>
    <p>{{ $first }}, {{ $second }}</p>
@stop

@extends('main')表示我们使用main.balde.php模版,@section('content') *** @stop中间的内容将被填充到@yield('content')的位置。之后刷新之前的页面,可以看到跟之前的结果是一样的。

新建路由,在Routes.php中添加contact路由:

Route::get('contact', 'PagesController@contact');

在PagesController.php中添加contact()方法:

public function contact() {
    return view('pages.contact');
}

在resources/views/pages/下创建contact.blade.php,并添加内容:

@extends('main')
 
@section('content')
    <h1>Contact me</h1>
@stop

在浏览器中查看结果。

创建多个@yield,有时在一些视图中,我们可以需要引入一些额外的js文件或者其他内容,我们只需要创建另外一个@yield即可。修改main.blade.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.4/css/bootstrap.min.css">
</head>
<body>
    <div class="container">
        @yield('content')
    </div>
 
    @yield('footer')
</body>
</html>

比如contact.blade.php中需要加入一段JS代码:

@extends('main')
 
@section('content')
    <h1>Contact me</h1>
@stop
 
@section('footer')
    <script>alert('Contact Form');</script>
@stop

这时,我们访问contact的时候,就会弹出一个对话框,而访问about则没有。

在blade模版中调用PHP方法
在blade模版中,我们可以使用@if进行条件判断,修改about.blade.php

@extends('main')
 
@section('content')
    @if ($first == 'John')
        <h1>Hi, John</h1>
    @else
        <h1>Else</h1>
    @endif
@stop

保存到浏览器查看结果。

除了@if外,还可以使用@unless(相当于 if !)、@foreach、@forelse(@foreach循环数组为空时)等。
修改about()方法:

public function about() {
    $people = ['Taylor Otwell', 'Dayle Rees', 'Eirc Barnes'];
    return view('pages.about', compact('people'));
}

以及about.blade.php:

@extends('main')
 
@section('content')
    <h1>About</h1>
 
    <h3>People I Like:</h3>
    <ul>
        @foreach ($people as $person)
            <li>{{ $person }}</li>
        @endforeach
    </ul>
@stop

浏览器查看结果。

Laravel教程五 Blade模版简介

现在假设传入一个空的$people=[];数组,查看页面的时候会发现People I Like:及<ul></ul>还是会输出,这是我们可以通过@if判断来处理:

@extends('main')
 
@section('content')
    <h1>About</h1>
    @if (count($people))
        <h3>People I Like:</h3>
        <ul>
            @foreach ($people as $person)
                <li>{{ $person }}</li>
            @endforeach
        </ul>
    @endif
@stop

好了,这一篇就到这为止。

Laravel教程五 Blade模版简介:等您坐沙发呢!

发表评论

表情
还能输入210个字