(慕课网_轻松学会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<;$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]*');

  

  

laravel-模板引擎Blade的更多相关文章

  1. Laravel 模板引擎Blade中标签详细介绍

    这篇文章主要介绍了Laravel模板引擎Blade中section的一些标签的区别介绍,需要的朋友可以来看看. Laravel 框架中的Blade模板引擎很好用,但是官方文档介绍的并不详细,我接下来将 ...

  2. Laravel模板引擎Blade中section的一些标签的区别介绍

    Laravel 框架中的 Blade 模板引擎,很好用,但是在官方文档中有关 Blade 的介绍并不详细,有些东西没有写出来,而有些则是没有说清楚.比如,使用中可能会遇到这样的问题: 1.@yield ...

  3. laravel使用的模板引擎 blade

    使用blade引擎的话必须在控制器中使用use   Blade

  4. lavarel模板引擎blade学习

    blade 模板学习 特点 主要的两个优点是:模板继承和区块 继承页面布局 布局文件(layout.php) + 详情文件 (page.php) 的组合,即一般到具体的组合.在blade文件之中的体现 ...

  5. Laravel中的模板引擎Blade

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. php模板引擎之blade

    一.简介模板引擎 模板引擎是将网站的页面设计和PHP应用程序几乎完全分离的一种解决方案,它能让前端工程师专注页面搭建,让后台工程师专注功能实现,以便实现逻辑分离,让每个人发挥所长.模板引擎技术的核心是 ...

  7. laravel框架总结(二) -- blade模板引擎

    ## 1.基本用法 ##情形1 $name = laravel5 <div class="title"> {{$name}} {{$name}}</div> ...

  8. laravel Blade 模板引擎

    与视图文件紧密关联的就是模板代码,我们在视图文件中通过模板代码和 HTML 代码结合实现视图的渲染.和很多其他后端语言不同,PHP 本身就可以当做模板语言来使用,但是这种方式有很多缺点,比如安全上的隐 ...

  9. laravel框架之blade模板引擎

    ## 1.基本用法 ##情形1 $name = laravel5 <div class="title"> {{$name}} {{$name}}</div> ...

  10. PHP laravel 5.0 Blade 模板引擎 Api使用备注

    PHP laravel 5.0 Blade 模板引擎 Api使用备注 /** * PHP laravel 5.0 Blade 模板引擎 Api使用备注 **/ //子模版中开头,调用@extends( ...

随机推荐

  1. C# Tips:获得当前登录计算机的用户(本地用户/域用户)

    须要using的namespace: using System.Security.Principal; 获得登录计算机的用户: WindowsIdentity windowsIdentity = Wi ...

  2. 收集的URL

    *******************************************看文章的好地方************************************** http://www. ...

  3. ICE 介绍及实现

    .ICE是什么? ICE是ZEROC的开源通信协议产品,它的全称是:The Internet Communications Engine,翻译为中文是互联网通信引擎,是一个面向对象的中间件,使我们能够 ...

  4. 使用SQL语句创建和删除约束

    原文:http://blog.csdn.net/hamber_bao/article/details/6504905 约束的目的就是确保表中的数据的完整性. 常用的约束类型如下: 主键约束:(Prim ...

  5. css伪类选择器详细解析及案例使用-----伪类选择器(2)

    结构伪类选择器: <div> <ul> /*ul:only-of-type*/ <li>one</li> /*li:first-child li:nth ...

  6. Android系统中长按事件的实现机制解析

    在Android的触摸消息中,已经实现了三种监测,它们分别是 1)pre-pressed:对应的语义是用户轻触(tap)了屏幕 2)pressed:对应的语义是用户点击(press)了屏幕 3)lon ...

  7. C++拾遗(二)关于变量

    符号常量——预处理方式 例如: #define ZERO 0 会替换程序中所有的ZERO为0,在那些设计为用于C和C++的头文件中,必须使用#define来定义符号常量. 无符号类型 unsigned ...

  8. 你好,C++(6)2.3 C++兵器谱

    2.3  C++兵器谱 正所谓“工欲善其事,必先利其器”,而要想做好C++程序设计,自然也离不开几件像样的兵器.下面我们就来看看C++兵器谱上有哪些神兵利器值得我们学习掌握.排在兵器谱上首要位置的就是 ...

  9. Web项目中JSP页面的一种调试方法与出现的问题 -- SpringMVC架构测试

    在前端开发中,尤其是MVC架构多人开发,负责前端的童鞋总是需要做静态页面,再和后台连接前无法使用变量如EL表达式等测试功能,所以本人引入了一个模板jsp数据测试专用文件,专门配置所有的变量,然后在待测 ...

  10. pyqt5和qt-designer结合

    在ubuntu中我们安装了python3-pyqt5这个包后就可以用pyqt5编程了,但是只能用纯代码写窗体,很麻烦.我们要用qt-designer来设计窗体. 我们通过新立得安装qt4-design ...