资讯专栏INFORMATION COLUMN

Laravel自定义模板指令小结

tracymac7 / 2478人阅读

摘要:模板包含大量的内置指令,例如等等,内置的指令对于做一个简单的项目足以,但是当你在代码中编写重复复杂的功能时,那么自定义模板指令或许可以帮你优化你的视图结构。

介绍

通常我们在视图模板中编写复杂的逻辑,看上去显得很杂乱,那么使用自定义的模板Directives,可以简化你的视图逻辑,编写出更优雅的代码,Laravel Blade是一种将其特殊语法编译成PHP和HTML的模板引擎。其特殊语法指令,指令是加糖功能,在其后隐藏杂乱的代码。模板包含大量的内置指令,例如@foreach/@if/@section/@extends等等,内置的指令对于做一个简单的项目足以,但是当你在代码中编写重复复杂的功能时,那么自定义模板指令或许可以帮你优化你的视图结构。


自定义一个简单的模板指令

$expression参数是可选的

Blade::directive("directive_name", function ($expression) {
    return $expression;
});

视图中用法Demo

@hello("World")

声明自定义模板指令的位置AppServiceProvider.php

";
        });
    }

    /**
     * Register bindings in the container.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

以这种方式定义的指令加载成功,可以在任何模板中使用


注意事项 第一点

不能直接访问自定义指令中传递的多个参数,需要将其遍历出来

@greet("Hi", "Hammad")

Blade::directive("hello", function ($expression) { list($greet, $name) = explode(", ", $expression); return ""; });

像 array() list() 这种并不是一个函数,而是一种语言结构

第二点

一定要时刻记住需要过滤输出,一般使用{{}}时候,Blade已经预先执行了过滤操作,为了避免恶意用户将js代码注入到站点,一定要转义HTML,可以使用Laravel自带的函数e(),也相当于htmlentities()

Blade::directive("hello", function ($expression) {
    return "";
});
第三点

每次添加或修改自定义模板指令之后,一定要先清除缓存视图模板,可以使用clear Artisan

php artisan view:clear

Laravel5.5新特性

在使用自定义的模板指令的时候,大多数只是某种形式的条件,这些要求我们需要注册三个独立指令,if/else/endif,目前Laravel5.5已经支持简化条件指令,例如下面的实例,模板可以使用admin/else/endadmin

public function boot()
{
    Blade::if("admin", function () {
        return auth()->check() && auth()->user()->isAdmin();
    });
}
结尾说明
2017 ending! script maker!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26206.html

相关文章

  • laravel定义模板指令-tojs

    摘要:允许你自定义命令,你可以使用方法注册命令。当编译器遇到该命令时,它将会带参数调用提供的回调函数。 Blade 允许你自定义命令,你可以使用 directive 方法注册命令。当 Blade 编译器遇到该命令时,它将会带参数调用提供的回调函数。blade模板可以通过directive方法来自定义模板指定, tojs指令主要用于PHP自定义一些数据转换为js对象方便js调用 1.创建T...

    arashicage 评论0 收藏0
  • 5 个非常有用的 Laravel Blade 指令,你用过哪些?

    摘要:接下来我将带大家认识下五个指令,这些指令将让你在解决特定问题时如虎添翼。如果你是刚接触的用户,这些小技巧能带你认识到模板引擎的便捷与高效。 showImg(https://segmentfault.com/img/remote/1460000015076241); 接下来我将带大家认识下五个 Laravel Blade 指令,这些指令将让你在解决特定问题时如虎添翼。如果你是刚接触 La...

    stefan 评论0 收藏0
  • Laravel 模板引擎(Blade)原理简析

    摘要:上次提到过,模板引擎一般是要做三件事情变量值的输出条件判断和循环引入或继承其他文件现在就来看看的模板引擎是如何来处理这三件事情的。引擎接下来就是本文的重点是如何编译的。如果有兴趣的话,也可以实现一个自己的模板解析引擎。 上次提到过,模板引擎一般是要做三件事情: 变量值的输出(echo) 条件判断和循环(if ... else、for、foreach、while) 引入或继承其他文件 ...

    vvpvvp 评论0 收藏0
  • vue 学习小结 送给新手

    摘要:只要数据发生改变,立即更新,由表单等带来的数据改变,数据相应字段也会发生相应改变。三界面的更新的输入,导致的值更新,元素内,任何表达式与有关的,都将重新计算,斌企鹅自动更新界面。作为组件化思维的先驱当年统计的组件多达多个。 Vue 是现在最火的前端JavaScript 开发框架。首先,接受它的思想 View 模板即html,静态界面Model 数据源 模型 界面所有的数据负责提供及管理...

    terasum 评论0 收藏0
  • Laravel 5.4 入门系列 5. 博客通用布局

    摘要:接下来执行迁移即可通用布局通用布局首先是博客首页,定义路由控制器视图博客首页访问下网站根目录,显示博客首页,框架基本搭建完成了。首先是通用布局通用布局里面除了使用之外,还使用了,用于加载其他模板。 5. 博客的通用布局 初始化 创建控制器、模型、迁移 博客的核心是文章,可以先来实现和文章有关的功能,根据前几节的介绍可知,我们至少需要创建这几类: PostsController:控制器...

    xuweijian 评论0 收藏0

发表评论

0条评论

tracymac7

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<