blade模板简介
在之前的laravel的了解过程中,知道怎么去使用laravel中的blade模板,同时也了解到在laravel中blade模板引擎功能非常强大,在这里不限制开发人员使用原声php代码,并且会把编译后的php原生代码生成缓存文件,方便在调试错误的时候,直接查看,当然这些呢仅仅是它的一部分,laravel官方在应用blade的模板中声明了很多函数,可以在blade模板中灵活的去应用.laravel的视图文件定义在resources/views
目录下.
如何在方法中调用视图文件
在laravel中调用视图文件,可以在路由中去调用,也可以在方法中去调用,但是不论在哪里使用都离不开一个函数view
,laravel封装好了这个函数,可以飞铲方便的去调用模板,比如:
在路由中调用一个add.blade.php
模板
Route::get('add',function(){
return view('add');//只需要调用名字,后缀不需要调用
});
public function add(){
return view('add');
}
当然,我们如果做一个完整的项目的话,使用的模板肯定很多,就不能全部放到views
目录下.需要自定义的文件夹,方便去查看,比如,views/article/add.blade.php
public function add(){
return view('article.add');
}
在方法中如何把数据传值到模板中,注意模板赋值要以一维数组的形式去传递如:
public function add(){
$data = ['title'=>'laravel','content'=>'blade模板'];
//直接在view函数第二个参数传递即可
return view('add',['data'=>$data]);
}
模板继承
何为模板继承,比如在tp框架中,有模板包含.可以利益include函数把一些模板相同的头尾部给引用过来,这样可以提高一些开发效率,但是模板继承比模板包含更加的实用,比如两个模板,虽然中间的内容不同,但是头尾部和中间的模板布局相同,就直接可以把共同的布局给继承过来.如
定义页面布局模板
//名字 为 parent.blade.php
<html>
<head>
<title>App Name - @yield('title')</title>
</head>
<body>
@section('sidebar')
This is the master sidebar.
@show
<div class="container">
@yield('content')
</div>
</body>
</html>
如上所见,这个文件中包含了通常见到的 HTML 标签。不过,请注意一下 @section
和 @yield
指令。@section
指令正像其名字所暗示的一样是用来定义一个视图片断(section)
的;@yield
指令是用来展示某个指定 section 所代表的内容的。
上面这个布局呢,大家都可以明白,这个布局相当于一个公共的布局,那下面在定义一个页面模板作为继承使用,如
//名字 为son.blade.php与parent.blade.php 为同目录
//首先继承模板
@extends('parent')
// 继承指定的title
@section('title', 'Blade')
@section('sidebar')
@@parent
<p>blade模板使用</p>
@endsection
@section('content')
<p>This is my body content.</p>
@endsection
然后在方法中
public function test(){
return view('son');
}
在方法中直接调用son.blade.php
就行,如果调用成功是直接使用的是parent.blade.php的模板布局,这就是继承,主要注意点就是@yield 和@section 这两个函数的使用,极大的提高开发效率
在tp框架中,如果想要使用if判断必须使用原生php写法,相对来说的使用起来比较麻烦,那么如果在blade模板中使用,怎么使用呢??
//public function add(){
$data = ['title'=>'laravel','content'=>'blade模板','score'=>mt_rand(40,90)];
return view('add',['data'=>$data]);
}
//模板中展示直接 {{$title}}双大括号里传变量名字,模板会自动去解析
{{$score}}
@if($score >= 60)
及格
@else
不及格
@endif
主要的使用方法并没太大改变,但是注意,如果使用if判断
两个注意点
1,加@符号
2,有开始就有结束 @endif
- 模板循环
- foreach
- forelse
使用方法与if判断语句相同
//foreach 循环
@foreach($user as $u)
{{$u}}
@endforeach
//forelse
@forelse($user as $u)
{{$u}}
@empty
暂无记录
@endforelse