上一篇笔记学习了如何向视图传送数据,这一篇将介绍一些更多关于Blade模版的知识。上一篇笔记中,创建blade模版时,需要往里面复制一大段的HTML代码,而每个模版中可能有很多内容是相同的,这时,我们可以利用一个布局模版来完成这些功能。
创建布局模版
我们到视图目录(/resources/views)中创建一个布局模版,这里我们命名为main.blade.php,这里是模版布局的代码:
- lang="en">
- charset="UTF-8">
Document - rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.4/css/bootstrap.min.css">
class="container">
我们只需要创建一次这个文件,之后所有引用这个模版的文件都会生成一个
@yield('content')
位置供我们填充内容。我们修改about.blade.php模版
- @extends('main')
- @section('content')
About me</h1>
- {{ $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')
Contact me</h1>
- @stop
在浏览器中查看结果。
创建多个
@yield
有时在一些视图中,我们可以需要引入一些额外的js文件或者其他内容,我们只需要创建另外一个
@yield
即可。修改main.blade.php
- lang="en">
- charset="UTF-8">
Document - rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.4/css/bootstrap.min.css">
class="container">
比如contact.blade.php中需要加入一段JS代码:
- @extends('main')
- @section('content')
Contact me</h1>
- @stop
- @section('footer')
- alert('Contact Form');script>
- @stop
这时,我们访问contact的时候,就会弹出一个对话框,而访问about则没有。
在blade模版中调用PHP方法
在blade模版中,我们可以使用@if
进行条件判断,修改about.blade.php:
- @extends('main')
- @section('content')
- @if ($first == 'John')
Hi, Johnh1>
- @else
Elseh1>
- @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')
Abouth1>
People I Like:h3>
- @foreach ($people as $person)
- {{ $person }}li>
- @endforeach
- ul>
- @stop
浏览器查看结果。
现在假设传入一个空的$people=[];
数组,查看页面的时候会发现People I Like:
及
还是会输出,这是我们可以通过
@if
判断来处理:
- @extends('main')
- @section('content')
Abouth1>
- @if (count($people))
People I Like:h3>
- @foreach ($people as $person)
- {{ $person }}li>
- @endforeach
- ul>
- @endif
- @stop
Over!
from : http://9iphp.com/web/laravel/laravel-5-blade.html
沒有留言:
張貼留言