我在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
破坏了整个link to issue,因此,在删除软件包之后,它再次起作用。
答案 0 :(得分:0)
问题出在这里vendor / laravel / framework / src / Illuminate / Support / Facades / Blade.php:34
如果您从以前的版本中更改了此退货
return static::$app['view']->getEngineResolver()->resolve('blade')->getCompiler();
然后您必须查看:清除
custom指令正在工作..但这不是很好。我认为别名为blade.compiler存在问题,但我不知道在哪里。
有帮助吗?
更新:
u有2个选项。
第一个选项是composer remove htmlmin/htmlmin
或
第二个选项是:
发布所有供应商资产
$ php artisan vendor:publish
这将创建一个config/htmlmin.php
编辑此配置并设置'blade' => false,