Laravel之Blade模板引擎

Blade是Laravel提供的一个既简单又强大的模板引擎,Blade允许在视图中使用原生php代码,所有Blade视图页面都将被编译成原生php代码并缓存起来,除非你的模板文件被修改了,否则不会重新编译。

1.模板继承

 一个网站,往往很多界面有相同的区块,比如导航栏,底部栏,顶部栏。这些界面只有主内容区域不一样。为了提高代码的复用性,我们可以将这些相同的区块放在布局模板里,然后让其它模板去继承它,其它模板称为子模板。这样一来,子模板就可以轻松获得与布局模板一样的内容。而且,子模板还可以做适当的修改。

resources->views目录下新建一个模板layouts.blade.php。布局模板。

<!DOCTYPE html>
<html lang="en">
<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>

解读:

@section('header')  模板的一部分。子模板可以继承,可以改变内容。

@yield('title')   模板的一部分。子模板可以继承,可以改变内容。

@yield('content',主要内容区域)    模板的一部分。子模板可以继承,可以改变内容,有默认值。


然后在当前目录下新建一个目录student,在里面写section1.blade.php,子模板。

@extends('layouts')   //继承公共模板,如果公共模板在views下,则直接写模板的名称
@section('header')   //对header重写,要@section('header') 和@stop配对使用
   @parent   //此句把父模板的内容的header部分也输出来
  重写头部
@stop
@section('content')   //  重写yield,和section一样
  重写yield里的内容
@stop
子模板如果要对公共模板的内容做修改,则使用@section 和@stop配对。里面写子模板自己的内容。

然后在student控制器里新增一个方法,

public function test4(){
/*模板继承*/
return view('student/section1');
}

配置好路由:Route::get('test4',['uses'=>'StudentController@test4']);


2.基础语法及inude的使用

(1)模板中输出php变量

在控制器里写:

public function test4(){
      $name='zls';
      return view('student/section1',['name'=>$name]);
}

模板section1.blade.php里写:

  <p>{{$name}}</p>     //这样就能输出了

(2)模板里调用php代码

和原生的php没有很大的区别,只是将php的标签换成了{{}}而已,其它都一样。

介绍一个短语法:

<p>{{$name or 'empty'}}</p>   若 $name存在则输出$name,否则输出’empty’.

3)原样输出,加@符,这样{{}}里的代码就不会解析了

  <p>@{{$name or 'empty'}}</p>

 4)模板中的注释。使用 {{--    --}}。

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

发现这个注释查看源里不显示

 5)引入子视图include

student目录下新建一个common视图,写:<p>我是include</p>.

然后在section1视图里写:@include('student.common')

@include(‘目录名/视图名’)

 

当然也可以向子视图传值:

common视图里写:<p>我是include{{$message}}</p>.

然后在section1视图里写:@include('student.common',['message'=>'我是错误信息'])

 

 

2.流程控制

  (1)<!--if语句-->  

 使用@符号,并且要有开始和结束标签

  @if($name=='zls')

       is zls

  @elseif($name=='imooc')

       is imooc

  @else

       not

  @endif

另外if条件里面也是可以用函数的: @if(isset($name))

  (2)<!--unless语句-->    是if的取反

  @unless($name=='zls')

  @unless

 3) <!--for语句-->

  @for ($i=0;$i<5;$i++)

     <p>{{$i}}</p>

  @endfor

 4)<!--foreach语句-->

 student控制器里写:

 public function test4(){

/*模板继承*/

$name='zls';

$students=Student::get();

    return view('student/section1',['name'=>$name,'students'=>$students]);

}

模板里写:

  @foreach ($students as $student)

      <p>{{$student->vip_name}}</p>

  @endforeach

(5)<!--forelse语句-->

  @forelse ($students as $student)

      <p>{{$student->vip_name}}</p>

  @empty

      <p>null</p>

  @endforelse

foreach一样,只是当数组为空时,会输出null

3.模板中的URL

3种方式生成url。

url()  路由的方式(这个最简单)

action()  控制器名+方法名

route()   路由别名的方式

具体操作:

 student控制器里新增一个test5方法,用来测试

public function test5(){

echo "你跳转到了test5";

}

 section1模板里写:

  <a href="{{url('test5')}}">url()点击跳转到test5里(路由方式)</a>

  <a href="{{action('StudentController@test5')}}">action() 点击跳转到test5里(控制器名@方法名方式)</a>

  <a href="{{route('url')}}">route()点击跳转到test5里( 路由别名方式)</a>

 

 

路由配置:Route::get('test5',['as'=>'url','uses'=>'StudentController@test5']);

Url访问laravel/public/test4




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值