当前位置: 首页 > 后端技术 > PHP

LaravelCustomTemplateDirective总结

时间:2023-03-30 05:01:56 PHP

简介通常我们在视图模板中写复杂的逻辑,看起来很乱,所以使用自定义模板指令可以简化你的视图逻辑,写出更优雅的代码,LaravelBlade是一个模板引擎,将其特殊的语法编译成PHP和HTML。其特殊的语法指令,指令是糖函数,背后藏着乱七八糟的代码。模板包含大量内置指令,如@foreach/@if/@section/@extends等,内置指令对于一个简单的项目来说足够了,但是当你在代码,然后自定义模板指令可能会帮助您优化视图结构。定制一个简单的模板指令$expression参数是可选的\Blade::directive('directive_name',function($expression){return$expression;});视图Demo中的用法

@hello('World')

声明自定义模板指令的位置AppServiceProvider.php";});}/***在容器中注册绑定。**@returnvoid*/publicfunctionregister(){//}}这样定义的指令加载成功,可以在任何模板中使用注意事项第一点不能直接访问自定义指令传递的多个参数,需要遍历

@greet('Hi','Hammad')

\Blade::directive('hello',function($expression){list($greet,$name)=explode(',',$表达式);返回n"";});像array()list()不是一个函数,而是一个语言结构永远记得过滤输出。一般在使用{{}}时,Blade已经预先执行了过滤操作。为了防止恶意用户向站点注入js代码,必须对HTML进行转义。可以使用Laravel自带的函数e(),也相当于htmlentities()\Blade::directive('hello',function($expression){return"";});第三点,每次添加或修改自定义模板指令,都必须先清除缓存的视图模板。可以使用clearArtisanphpartisanview:clearLaravel5.5newfeature在使用自定义模板指令时,大部分只是一些形式的需求,我们需要注册三个独立的指令,if/else/endif,目前Laravel5.5已经支持简化的条件指令,比如下面的例子,模板可以使用admin/else/endadminpublicfunctionboot(){\Blade::if('admin',function(){returnauth()->check()&&auth()->user()->isAdmin();});}结局说明2017完结!编剧!