Laravel 5.5 视图 - Blade 模板引擎

Blade 简介

Blade 是由 Laravel 提供的非常简单但功能强大的模板引擎,不同于其他流行的 PHP 模板引擎,Blade 在视图中并不约束你使用 PHP 原生代码。所有的 Blade 视图最终都会被编译成原生 PHP 代码并缓存起来直到被修改,这意味着对应用的性能而言 Blade 基本上是零开销。

Blade 视图文件(也叫模板文件)使用 .blade.php 文件扩展名,都存放在 resources/views 目录下。

模板继承

定义布局

使用 Blade 的两个最大优点是模板继承和片段组合,开始之前让我们先看一个例子。

首先,我们测试主页面布局,由于大多数 Web 应用在不同页面中使用同一个布局,可以很方便的将这个布局定义为一个单独的 Blade 页面。

在 resources/views/layouts 目录中,创建一个布局文件 layout.blade.php,内容如下:

<html>
    <head>
        <title>应用名称 - @yield('title')</title>
    </head>
    <body>
        @section('sidebar')
            这里是侧边栏
        @show

        <div class="container">
            @yield('content')
        </div>
    </body>
</html>

该文件包含典型的 HTML 标记,不过,注意 @section 和 @yield 指令,前者定义了一个内容片段,而后者用于显示给定片段的内容。

现在我们已经为应用定义了一个布局,接下来定义继承该布局的子页面。

继承布局

定义子页面时,可以使用 Blade 的 @extends 指令来指定子页面所继承的布局,继承一个 Blade 布局的视图可以使用 @section 指令注入内容到布局定义的内容片段中。

如上面例子所示,这些片段的内容将会显示在布局中使用 @yield 的地方。

在 resources/views 目录中,创建视图文件 child.blade.php,内容如下:

@extends('layouts.layout')

@section('title', '视图标题')

@section('sidebar')
    @parent
    <p>这是子页面的内容</p>
@endsection

@section('content')
    <p>这里是主体内容,完善中...</p>
@endsection

在本例中,sidebar 片段使用 @parent 指令来追加(而非覆盖)内容到布局的侧边栏,@parent 指令在视图渲染时将会被布局中的内容替换。

然后,在 routes/web.php 中定义路由以便访问该视图。

Route::get('blade', function () {
   return view('child');
});

在浏览器中访问 http://www.adm.devp/blade ,查看显示效果。

组件&插槽

组件和插槽给内容片段(section)和布局(layout)带来了方便,不过,有些人可能会发现组件和插槽的模型更容易理解。

首先,我们假设有一个可复用的“alert”组件,我们想要在整个应用中都可以复用它。

创建 resources/views/alert.blade.php 文件,内容如下:

<div class="alert alert-danger">
    {
  { $slot }}
</div>

{ { $slot }} 变量包含了我们想要注入组件的内容,现在,要构建这个组件,我们可以使用 Blade 指令 @component。

@component('alert')
    <strong>Whoops!</strong> Something went wrong!
@endcomponent

有时,为组件定义多个插槽很有用。下面我们来编辑 alert 组件。

修改 resources/views/alert.blade.php 文件:

<div class="alert alert-danger">
    <div class="alert-title">{
  { $title }}</div>
    {
  { $slot }}
</div>

现在,我们

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值