Laravel 5.6 Blade自定义指令失效问题求助
解决Laravel 5.6中Blade指令@hello不生效的问题
嘿,我之前也踩过这个Blade指令的坑!你遇到的问题核心在于Blade指令的返回值格式不对——Laravel要求Blade指令必须返回可执行的PHP代码片段,而不是直接返回字符串。
你现在的写法是直接返回"Hello, World!",Blade编译视图的时候根本不会把它当成要输出的内容处理,自然就原样显示@hello了。
正确的写法
把你的指令改成返回PHP输出代码:
Blade::directive('hello', function () { // 返回带echo的PHP代码块 return "<?php echo 'Hello, World!'; ?>"; });
如果需要对内容进行HTML转义(避免XSS风险,是个好习惯),可以用Laravel的e()辅助函数:
Blade::directive('hello', function () { return "<?php echo e('Hello, World!'); ?>"; });
后续必做步骤
修改完指令后,别忘记再次清除视图缓存:
php artisan view:clear
如果还是不行,可以手动删除storage/framework/views目录下的所有编译文件,彻底清掉旧缓存。
另外再检查一下:你的服务提供者有没有在config/app.php的providers数组里正确注册?如果没注册的话,指令根本不会被加载哦。
内容的提问来源于stack exchange,提问作者Gonçalo Marrafa
相关产品推荐
相关产品推荐

