核心PHP环境下duncan3dc/Blade模板静态添加自定义指令方法咨询
原生PHP下duncan3dc/blade静态添加自定义指令方案
你当前的动态实现是每次实例化BladeInstance时传入配置好的指令集,要改成静态全局生效的方式可以通过该库提供的静态门面类实现,只需要全局配置一次就可以在所有模板渲染场景生效,具体实现如下:
1. 全局静态初始化配置
在项目的入口文件或者公共配置加载阶段(仅需执行一次)完成配置:
use duncan3dc\Laravel\Blade; use duncan3dc\Laravel\Directives; // 预配置资源路径和其他自定义指令 $directives = (new Directives) ->withCss('assets/css') ->withJs('assets/js'); // 静态初始化Blade,依次传入视图目录、缓存目录和配置好的指令集,路径替换为你项目的实际路径即可 Blade::init("/your/project/views/path", "/your/project/cache/views/path", $directives);
2. 后续使用无需重复配置
完成初始化后,任意位置需要渲染模板直接调用静态方法即可,你之前使用的@css()、@js()指令已经全局生效:
// 静态渲染模板示例,第一个参数为模板路径,第二个参数为传入模板的变量数组 echo Blade::render("page.user", ["username" => "张三"]);
3. 额外添加其他自定义静态指令
如果需要扩展更多自定义指令,直接调用静态directive方法注册即可:
// 示例:注册一个格式化时间的自定义指令 Blade::directive('formatDate', function ($timestamp) { return "<?php echo date('Y年m月d日', {$timestamp}); ?>"; });
模板中使用方式:@formatDate(time())
注意:以上实现完全基于原生PHP,不依赖Laravel框架
内容的提问来源于stack exchange,提问作者Abdulbasit
相关产品推荐
相关产品推荐

