Blade模板引擎的简介及模板继承的使用
定义一个公用模板
view下的layouts.blade.php文件 <!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>
添加一个Controller文件
StudentController.php
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/5/25 * Time: 9:26 */ namespace App\Http\Controllers; use App\Student; class StudentController extends Controller { public function section1() { $students = Student::get(); $name = 'yci'; $arr =['imooc','yci']; return view('student.section1',[ 'name'=>$name, 'arr'=>$arr, 'students'=>$students ]); } }
在view文件夹下创建student文件夹,在此文件夹中添加与Controller中方法名相同的模板
section.blade.php文件 @extends('layouts') @section('header') {{--实现父类的内容--}} @parent header @stop
基础语法及include的使用
section1.blade.php文件 @extends('layouts') @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)?'true':'false'}}</p> {{--3.原样输出,只需在前面加@符号--}} <p>@{{ $name }}</p> {{--4.模板中的注释不可见--}} <!-- html注释可以看见 --> {{--5引入子视图 include--}} @include('student.common',['message'=>'我是错误信息']) @stop
common.blade.php文件 <p>我是include {{$message}}</p>
流程控制
@extends('layouts') @section('content') {{--if的用法 ,unless相当于if的取反--}} @if($name =='yci') i'm yci @elseif($name =='imooc') i'm imooc @else who am i? @endif {{--for的用法--}} @for($i=0;$i<10;$i++) <p>{{$i}}</p> @endfor {{--foreach一般用于输出数组或者对象--}} @foreach($students as $student) <p>{{$student->name}}</p> @endforeach {{--forelse的用法--}} @forelse($students as $student) <p>{{$student->name}}</p> @empty <p>空数组</p> @endforelse @stop
模板中的URL
@extends('layouts') @section('content')
url()通过路由的名称生成URL,action()通过指定控制器及方法名生成URL,route()通过路由的别名生成URL
<a href= " {{url( 'url' )}} " >url() </a><br/> <a href= " {{action( 'StudentController@urlTest' )}} " >action() </a><br/> <a href= " {{route( 'url' )}} " >route() </a><br/> @stoppublic function urlTest(){ return 'urlTest'; }
Route::any('url',['as'=>'url','uses'=>'StudentController@urlTest']);