您的位置:首页 > 编程语言 > PHP开发

Laravel基础篇学习笔记(三):Blade模板引擎

2017-02-10 17:30 671 查看

1)Blade模板引擎简介及模板继承的使用

定义一个父模板: laravel/resources/views/layouts.blade.php

yield:展示某个指定section的内容;在声明中只定义了一个视图片段,没有任何内容,不可扩展;
section:定义一个视图片段;既可以在页面布局中定义一个视图片段,也可以有内容,还可以被子模板扩展;


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>轻松学会Laravel - @yield('title')</title>
<style>
.header {width: 1000px; height: 150px; margin: 0 auto; background: #f5f5f5; border: 1px solid #ddd;}
.main {width: 1000px; height: 300px; margin: 0 auto; margin-top: 15px; clear: both;}
.main .sidebar {float:left; width:20%; height:inherit; background: #f5f5f5; border:1px solid #ddd;}
.main .content {float:right; width:75%; height:inherit; background: #f5f5f5; border:1px solid #ddd;}
.footer {width:1000px; height:150px; margin:0 auto; margin-top: 15px; background: #f5f5f5; border:1px solid #ddd;}
</style>
</head>
<body>
<div class="header">
@section('header')
头部
@show
</div>
<div class="main">
<div class="sidebar">
@section('sidebar')
侧边栏
@show
</div>
<div class="content">
@yield('content', '主要内容')
</div>
</div>
<div class="footer">
@section('footer')
底部
@show
</div>
</body>
</html>


控制器路径: laravel/app/Http/Controllers/StudentController.php

return view('student.section1');


新建模板路径: laravel/resources/views/student/section1.blade.php

@extends('layouts')     <!-- 继承第一个定义的视图。如果需要继承的模板不是设置在view目录下,有文件夹存在,则可以:@extends('文件夹名.模板名') -->

@section('header')
@parent             <!-- 父模板的内容也输出 -->
header
@stop

@section('sidebar')
header
@stop

@section('content')     <!-- 虽然父模板设置成 yield,但是仍用 @section() 控制 -->
content
@stop


2)基础语法及include的使用

控制器路径:laravel/app/Http/Controllers/StudentController.php

$name = 'sean';
$arr = ['sean', 'imooc'];

// return view('student/section1');   用斜线也行
return view('student.section1', [
'name' => $name,
'arr' => $arr,
]);


模板路径:laravel/resources/views/student/section1.blade.php

@section('content')
content

<!-- 1. 模板中输出PHP变量 -->
<p>{{$name}}</p>

<!-- 2. 模板中调用PHP代码 -->
<p>{{ time() }}</p>
<p>{{ date('Y-m-d H:i:s', time())}}</p>

<p>{{ in_array($name, $arr) }}</p>
<p>{{ var_dump($arr) }}</p>

<p>{{ isset($name) ? $name : 'default' }}</p>

<!-- <p>
<?php echo isset($name) ? $name : 'default' ?>
</p> -->

<p>{{ $name1 or 'default' }}</p>

<!-- 3. 原样输出 -->
<p>@{{ $name }}</p>

{{-- 4. 模板中的注释 --}}

{{-- 5. 引入子视图 include --}}
@include('student.common1', ['message' => '我是错误信息'])

@stop


引入子视图模板路径:laravel/resources/views/student/common1.blade.php

<p>我是include {{ $message }}</p>


3)流程控制

模板路径:laravel/resources/views/student/section1.blade.php

<!-- if 流程控制 -->
@if ($name == 'sean')
I'm sean
@elseif ($name == 'imooc')
I'm imooc
@else
Who am I?
@endif

<!-- 可在流程控制里直接使用PHP函数 -->
@if (in_array($name, $arr))
true
@else
false
@endif

<!-- if 的取反 -->
@unless( $name != 'sean')
I'm sean
@endunless

<!-- for 流程控制 -->
<!-- @for ($i=0; $i < 10; $i++)
<p>{{ $i }}</p>
@endfor -->

<!-- foreach 流程控制 -->
@foreach($students as $student)
<p>{{ $student->name }}</p>
@endforeach

<!-- forelse,foreach变种,有数据则输出,没数据则empty -->
@forelse($students as $stu)
<p>{{ $stu->name }}</p>
@empty
<p>null</p>
@endforelse


4) 模板中URL

加上一条路由,路由名称为
urlTest
,路由别名为
url
,路由指向
StudentController@urlTest


Route::any('urlTest', ['as' => 'url', 'uses' => 'StudentController@urlTest']);


控制器路径:laravel/app/Http/Controllers/StudentController.php

public function section1()
{
return view('student.section1');
}

public function urlTest()
{
return 'urlTest';
}


模板路径:laravel/resources/views/student/section1.blade.php

以下超链接都会链接到:http://192.168.2.110/laravel/public/urlTest


<!-- url() 通过路由的名称生成url -->
<a href="{{ url('urlTest') }}">url()</a>

<!-- action() 通过指定控制器和方法名生成url -->
<a href="{{ action('StudentController@urlTest') }}">action()</a>

<!-- route() 通过路由的别名生成url -->
<a href="{{ route('url') }}">route()</a>


模板路径:laravel/resources/views/student/common1.blade.php

<p>我是include {{ $message }}</p>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  laravel