laravel之Blade模板引擎

本文深入解析Laravel的Blade模板引擎,展示其强大功能,包括原生PHP代码支持、模板继承、变量输出及控制结构等,适用于后端开发人员学习。

Blade模板引擎介绍

  • Blade是一个Laravel提供的一个既简单有强大的模板引擎
  • 和其他流行的PHP模板引擎不一样,Blade并不限制你在视图(view)中使用原生php代码
  • 所有Blade视图页面都将被编译成原生php代码并缓存起来,除非你的模板文件被修改了,否则不会重新编译

模板继承:section,yield,extends, partent

demo模板文件:

<!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>

模板文件继承:

@extends('layouts')
   
@section('header')
@parent
header重写
@stop

@section('sidebar')
    @parent
    siderbar重写
@stop

@section('content')  //在模板中可以用yield输出
xxxxx
@stop

模板中输出变量

 <p>{{ $name }}</p>

模板中调用php代码

<p>{{time()}}</p>
<p>{{date('Y-m-d H:i:s', time())}}</p>
<p>{{ in_array($name, $arr) ? 'true':'false' }}</p>
<p>{{var_dump($arr)}}</p>
<p>{{ isset($name) ? $name : 'default' }}</p>
<p>{{ $name or 'default' }}</p><!-- 短语法,这个和上面相同 -->

上述操作的控制器部分代码

public function section1()
{
    $name = 'sean';
    $arr = [
        'sean',
        'imooc'
    ];
    return view('student.section1', [
        'name' => $name,
        'arr' => $arr
        ]);
}

若要原样输出,使用@符

<p>@{{ $name }}</p>

模板中的注释

{{--这里的注释在浏览器看不到--}}

引入子视图include的使用

@include('student.common1',['msg' => '我是错误信息!'])

并在子视图中输出变量

<p>我是include{{ $msg }}</p>

if…else…

<br>
@if ($name == 'sean1')
	 i'm sean
@elseif($name == 'imooc')
	 i'm imooc
@else
	 Who am I
@endif
<br>

if中也可以用php函数

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

unless 相当于if的取反

@unless($name != 'sean')
    I'm sean
@endunless

for循环

@for ($i = 0; $i < 10; $i++)
    <p>{{ $i }}</p>
@endfor

foreach

@foreach($students as $student)
    <p>{{ $student->name }}</p>
@endforeach

forelse…empty…(没有数据时的处理操作)

@forelse($students as $students)
	<p>{{ $students->name }}</p>
@empty
	<p>null</p>
@endforelse

模板中的URL(通常只用url和route)

url() //通过路由的名称生成url

<a href="{{url('url')}}">url()</a>

action() //通过指定控制器和方法名生成url

<a href="{{ action('StudentController@urlTest') }}">action()</a>

route() //通过路由的别名生成url

<a href="{{route('url')}}">route()</a>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值