自Laravel 5.7升级到Laravel 5.8后,自定义刀片指令不起作用

时间:2019-08-13 06:55:37

标签: php laravel laravel-blade 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破坏了整个link to issue,因此,在删除软件包之后,它再次起作用。

1 个答案:

答案 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,