zoukankan      html  css  js  c++  java
  • Laravel 5.5 Blade::if 简介

    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 IlluminateSupportFacadesBlade;
    
    Blade::if('admin', function () {
        return auth()->check() && auth()->user()->isAdmin();
    });

    注意我们上面引用 IlluminateSupportFacadesBlade 类,再定义一个 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 简介

  • 相关阅读:
    第二阶段冲刺——个人总结05
    购书最低价
    第二阶段冲刺——个人总结04
    第二阶段冲刺——个人总结03
    第二阶段冲刺——个人总结02
    学习进度条——十三周
    第二阶段冲刺——个人总结01
    android模拟器
    unigui导出TMS.Flexcel【5】
    unigui+fastreport 打印【4】
  • 原文地址:https://www.cnblogs.com/lamp01/p/8443173.html
Copyright © 2011-2022 走看看