Laravel 5.5 引入了一个新的黑科技,就是你可以使用 Blade::if 来进行一些简单的逻辑判断啦!想不出应用场景在哪?想象下面的场景:

  1. 判断一个用户是否是 admin

  2. 判断应用的开发环境不同以便我们加载不同的 script 文件

上面的两个常见的场景,其实我们在使用的使用通常会用下面的写法来解决:

// 1.
@if(auth()->check() && auth()->user()->isAdmin()) @endif
// 2.
@if(app()->environment('production')) @endif

很明显,如果我们需要在页面中多次重复使用上面的逻辑判断,我们就会写很多重复的代码,我们是否可以寻求一种自定义的 blade 标签来进行简单的逻辑判断,这样就OK了。

这就是 Blade::if 产生的原因了,我们来看看它的用法就知道了:

use Illuminate\Support\Facades\Blade;

Blade::if('admin', function () {
return auth()->check() && auth()->user()->isAdmin();
});

注意我们上面引用 Illuminate\Support\Facades\Blade 类,再定义一个 if 标签,标签的名字就是 admin,所以在视图文件使用的时候是这样的:

@admin
<a href="{{ route('super.secret') }}">管理员页面</a>
@else
<a href="{{ route('login') }}">其他页面</a>
@endadmin

注意到没。我们直接使用的是 @admin 的用法,思路清晰直白。

再来看第二个应用场景,如何便捷的判断应用的环境是否是生产环境,我们可以这样:

Blade::if('prod', function () {
return app()->environment('production');
});

同理,如果我们是在 blade 视图使用这个判断的话,直接这样:

@prod
<script src="some-prod.js"></script>
@endprod

那如果说,我想传入参数呢?Easy:

Blade::if('env', function ($env) {
return app()->environment($env);
});

注意 function 这里我们传入了 $env 变量,使用的使用相应地传入值就好,大概是这样:

@env('production')
<script src="some-prod.js"></script>
@endenv

这是线上环境!

@env('local')
<script src="some-prod.js"></script>
@endenv

这是本地环境!

是不是超方便简单!

总结

在 Laravel 5.5 时善用 Blade::if ,确实是可以在特定的应用场景中带来便利的。我觉得你也应该知道这个小技巧,哈哈哈。

来源:Laravel 5.5 Blade::if 简介

Laravel 5.5 Blade::if 简介的更多相关文章

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

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

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

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

  3. Laravel 如何在blade文件中使用Vue组件

    Laravel 如何在blade文件中使用Vue组件 1. 安装laravel/ui依赖包 composer require laravel/ui 2.生成vue基本脚手架 php artisan u ...

  4. Laravel框架中Blade模板的用法

    1. 继承.片段.占位.组件.插槽 1.1 继承 1.定义父模板 Laravel/resources/views/base.blade.php 2.子模板继承 @extends('base') 1.2 ...

  5. laravel框架之blade模板引擎

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

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

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

  7. PHP laravel系列之Blade模版

    一.什么是Blade模版? Blade 是 Laravel 提供的一个既简单又强大的模板引擎. 和其他流行的 PHP 模板引擎不一样,Blade 并不限制你在视图中使用原生 PHP 代码.所有 Bla ...

  8. Laravel 5.1 Blade模板引擎

    为什么要使用blade 它是干什么用的? blade模板引擎使我们写HTML页面的地方,使用它是因为它能给我们提供很多的遍历,减少代码的重复率 提高开发效率.我们写blade的路径是 resource ...

  9. Laravel 怎么在 blade 视图中将带 HTML 字符原样输出

    ### 感觉这是比较细小的,细节处理问题,很容易就一下子想不起怎么处理 但知道处理方式是那么简单时,真的觉得基础不够扎实 ### 富文本编辑内容: 视图原样输出: 视图模板的标签是这样处理就可以的-- ...

随机推荐

  1. python语法re.compile模块介绍

    1. re模块是正则表达式模块,re模块中包含一个重要函数是compile(pattern [, flags]) ,该函数根据包含的正则表达式的字符串创建模式对象.可以实现更有效率的匹配. impor ...

  2. mutable c++

    The keyword mutable is used to allow a particular data member of const object to be modified. This i ...

  3. thinkphp3.1.3验证码优化

    现状 thinkphp3.1.3版本中的验证码字符分布不均匀,在自定义宽高时很明显. 调用代码: Image::buildImageVerify(6, 5, 'png', 150, 50); 生成的验 ...

  4. selenium初识(二)——之webdriver API

    配置完的环境之后,我们先来写一个小脚本: # __Author__:"Jim_xie" from selenium import webdriver from time impor ...

  5. poj1936 假期计划第一水

    All in All Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 29651   Accepted: 12312 Desc ...

  6. poj 1035 纯正的字符串水

    Spell checker Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 22673   Accepted: 8258 De ...

  7. Block层也是有IO的优先级的

    ---恢复内容开始--- 今天查看iotop的原理,竟然发现了IO优先级一说,IO是block层cfs调度器中的概念 block层也有一个类似于CPU的调度算法 对进程分成三个级别:RT,BE,IDL ...

  8. Java分布式数据导出实践

    伴随业务发展日益剧增,对数据的要求越来越多也越来越高. 用户在浏览器发起导出请求--web服务器接收请求--请求后台获取数据--数据统计后生成excel或其他图标--响应给客户端 整个过程至少5步,才 ...

  9. ZooKeeper客户端 zkCli.sh 节点的配额设置

    首先使用 zkCli.sh 连接上ZooKeeper服务器 配额设置命令格式如下: setquota -n|-b val path -n:val设置子节点个数 -b:val设置节点的数据长度 如果我们 ...

  10. 滚动数组要来回赋初值呀。。orzzzzzzzzzzzzzzzzzzzzzzzzzz

    2个小时的人参orzzzzzzzzzzzzzzz ……~(-o ̄▽ ̄)-o ...……o-(_△_o-) ~...……~(-o ̄▽ ̄)-o ...……o-(_△_o-) ~... ……~(-o ̄▽ ̄) ...