laravel-模板引擎Blade


(慕課網_輕松學會Laravel-基礎篇_天秤vs永恆老師)

一、概述

  Blade是Laravel提供的一個既簡單又強大的模板引擎

  和其他流行的PHP模板引擎不一樣,Blade並不限制你在視圖view中使用原生的PHP代碼

  所有的Blade視圖頁面都將被編譯成原生的PHP代碼並緩存起來,除非你的的模板文件修改,否則不會重新編譯

  模板繼承:section,yield,extends,parent(參照 http://www.jb51.net/article/60957.htm)

二、實例

  1、定義布局模板 views/people/layout/layout.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>Laravel @yield('title')</title>
    <meta charset="utf-8">
    <style type="text/css">
        .body{margin:0px;padding:0px;}
        .header{width:100%;height:60px;background: red;margin-bottom: 10px;}
        .sidebar{width:20%;height:500px;background: green;
            margin-right:20px;margin-bottom: 10px;}
        .content{width:72%;height:500px;background: blue;margin-bottom: 10px;}
        .footer{width:100%;height:60px;background: black}
        div{float:left;}
    </style>
</head>
<body>
    <div class="header">
        @section('header')
        頭部
        @show
    </div>
    <div class="sidebar">
        @section('sidebar')
        側邊欄
        @show
    </div>
    <div class="content">
        @yield('content','主要內容區域')
    </div>
    <div class="footer">
        @section('footer')
        底部
        @show
    </div>
</body>

2、控制器方法分配數據  

//模板技術
    public function section1(){
        //.和/都可以
        $name = 'helloiu';
        $data = ['sss','zzz'];
        $students = Student::get();
        return view('people.student.section1',[
            'name' => $name,
            'data' => $data,
            'students' => $students,
        ]);
    }
    public function urlTest(){
        return 'urlTest';
    }

3、子模板 views/people/student/section1.blade.php

@extends('people.layout.layout')

@section('header')
    <!-- @parent展示父模板的內容 -->
    @parent
    HEADER
@stop

@section('sidebar')
    sideBar
@stop

@section('content')
    Content
    <!-- 1、模板中輸出PHP變量 -->
    <p>{{$name}}</p>

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

    <!-- 數組 true和false必須加引號,要當字符串展示 -->
    <p>{{ in_array($name,$data) ? 'true' : 'false' }}</p>
    <p>{{ var_dump($data) }}</p>

    <p>{{ isset($name) ? $name : 'default' }}</p>
    <!-- isset短語法 -->
    <p>{{ $name or 'default' }}</p>

    <!-- 3、原樣輸出 -->
    <p>@{{ $name }}</p>

    <!-- 4、模板中的注釋,在瀏覽器查看源代碼看不到 -->
    {{--  我是注釋  --}}

    <!-- 5、引入子視圖 可以直接把數據分配到子視圖中,在子視圖中展示 -->
    @include('people.common.common',['message' => '我是error信息']);

    <!-- 6、流程控制 在if或者for后面的括號里使用php代碼,不需要雙花括符-->
    @if($name == 'helloJiu')
        I'm {{$name}}
    @elseif($name == 'helloHu')
        I'm helloHu
    @else
        who am i?{{$name}}
    @endif

    @if (in_array($name, $data))
        true
    @else
        false
    @endif

    <br>

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

    <!-- 循環 -->
    @for($i=0;$i<10;$i++)
        {{ $i }}
    @endfor

    @foreach($students as $student)
        {{ $student->created_at }}
    @endforeach

    <!-- 如果$students存在,則輸出,不存在,輸出null -->
    @forelse($students as $student)
        {{ $student->name }}
    @empty
        <p>null</p>
    @endforelse

    <!-- 模板中的URL -->
    <a href="{{ url('url') }}">url</a>
    <a href="{{ action('People\StudentController@urlTest') }}">urlAction</a>
    <br>
    <a href="{{ route('url')}}">route</a>
@stop

4、people/common/common.blade.php

<p>我是common子視圖include {{ $message }}<p>

5、整個路由系統

<?php

Route::get('/', function () {
    return view('welcome');
});

Route::group(['middleware' => ['web']], function () {
    //
});
//基礎路由
// Route::get('basic1',function(){
//     return 'Hello World';
// });

// Route::post('basic2',function(){
//     return 'basic2';
// });
// //多請求路由
// Route::match(['get','post'],'multy1',function(){
//     return 'multy1';
// });

// Route::any('multy2',function(){
//     return 'multy2';
// });

// //路由參數
// Route::get('user/{id}',function($id){
//     return 'User-'.$id.'id';
// })->where('id','[\d]*');

// Route::get('user/{name?}',function($name='helloJiu'){
//     return 'User-'.$name;
// })->where('name','[A-Za-z]*');

// Route::get('user/{id}/{name}',function($id,$name='HL'){
//     return 'user-id-name'.$id.$name;
// })->where(['name'=>'[A-Z]*','id'=>'[\d]*']);

//路由別名
// Route::get('user/center',['as'=>'center',function(){
//     return route('center');
// }]);

//路由群組
Route::group(['prefix' => 'people'], function(){

    Route::get('member/index','People\MemberController@index');
    Route::get('member/model','People\MemberController@model');
    Route::get('student/index','People\StudentController@index');
    Route::get('student/add','People\StudentController@insert');
    Route::get('student/update','People\StudentController@update');
    Route::get('student/select','People\StudentController@select');
    Route::get('student/delete','People\StudentController@delete');

    //查詢構造器路由
    Route::get('student/qbAdd','People\StudentController@qbAdd');
    Route::get('student/qbUpdate','People\StudentController@qbUpdate');
    Route::get('student/qbDelete','People\StudentController@qbDelete');
    Route::get('student/qbSelect','People\StudentController@qbSelect');
    Route::get('student/qbSelect','People\StudentController@qbSelect');
    Route::get('student/qbSelectJH','People\StudentController@qbSelectJH');

    //ORM路由
    Route::get('student/ormIndex','People\StudentController@ormIndex');
    Route::get('student/ormAddByAttr','People\StudentController@ormAddByAttr');
    Route::get('student/ormAddByCreate','People\StudentController@ormAddByCreate');
    Route::get('student/ormSelect','People\StudentController@ormSelect');
    Route::get('student/ormUpdate','People\StudentController@ormUpdate');
    Route::get('student/ormDelete','People\StudentController@ormDelete');

    //模板練習路由
    Route::get('student/section1','People\StudentController@section1');
    Route::get('student/urlTest',[
        'as' => 'url',
        'uses' => 'People\StudentController@urlTest',
    ]);
    
    Route::get('index',function(){
        return view('People.layout.layout');
    });

});

//http://www.hfj110.com/laravel/public/index.php/member/user/center

//路由中輸出視圖
Route::get('view',function(){
    return view('welcome');//輸出welcome.html
});
//綁定控制器MemberController::info()
Route::get('member/info','MemberController@info');
Route::any('member/info', [
    'uses' => 'MemberController@info',
    'as' => 'memberinfo',

]);

Route::any('getID/{id}',['uses'=>'MemberController@getID'])
    ->where('id','[\d]*');

 

  

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM