php - 从 Laravel 5.7 升级到 Laravel 5.8 后自定义刀片指令不起作用
问题描述
我在 Laravel 中有一些 Ziggyroutes 的自定义指令。在 Laravel 5.7 中它们工作得很好,现在我已经升级到 Laravel 5.8 并且它们停止工作了。如果我调用自定义指令,他们只会打印出纯文本。
我在一个干净的项目中尝试过它,它在那里工作。我已经用 view:clear、cache:clear 和 config:clear 清除了我的缓存
例如我有:
\Blade::directive('routes', function($group = null){
return "<?php echo app('" . BladeRouteGenerator::class . "')->generate({$group}); ?>";
});
在 Blade 中,我这样称呼它:
@routes()
给出一个纯文本说明的结果@routes()
。
所以我期望并且应该发生的事情是将包含所有路线的列表粘贴到刀片上。而此时发生的事情是它只是以纯文本形式打印它@routes()
。
那么这种行为可能是什么问题。从 Laravel 5.7 升级到 5.8,我错过了什么吗?
更新:显然这个包htmlmin
破坏了整个问题的链接,所以在删除包后它又可以工作了。
解决方案
问题在这里 vendor/laravel/framework/src/Illuminate/Support/Facades/Blade.php:34
如果您从以前的版本更改此返回
return static::$app['view']->getEngineResolver()->resolve('blade')->getCompiler();
那么你必须查看:clear
自定义指令正在工作..但这不好......我认为问题出在别名 Blade.compiler 但我不知道在哪里。
有什么帮助吗?
更新:
你有2个选择。
第一个选项是composer remove htmlmin/htmlmin
或者
第二种选择是:
发布所有供应商资产
$ php artisan vendor:publish
这将创建一个config/htmlmin.php
编辑此配置并设置'blade' => false,
推荐阅读
- api - 如何制作侮辱命令(discord.py)
- html - 如何将 CSS 动画添加到 ReactJs 组件
- python - 使用字典将数据帧子集到多个
- javascript - Object transformation assistance
- node.js - TypeError: brain.NeuralNetwork is not a constructor
- mysql - 如何使用正则表达式在 SQL 中根据其他列添加新列
- python - 纸浆总和与目标函数
- github - Jekyll 和博客托管的问题
- c++ - 如何将用户提供的函数 std::bind 绑定到 std::function 类型的成员变量?
- linux - 彻底删除 Openvpn