【问题标题】:Blade directive not working刀片指令不起作用
【发布时间】:2018-08-28 01:00:54
【问题描述】:

我正在使用 Laravel 5.6 并尝试定义刀片指令(在服务提供者的 boot() 方法中):

Blade::directive('hello', function () {
        return "Hello, World!";
});

但在我看来,当我写 @hello 时,它会显示 @hello 而不是应有的“hello world”。

我已经完成了artisan view:clear(和cache:clear),但仍然没有结果。

【问题讨论】:

  • 你的服务提供者添加到config.php了吗?
  • 当然是@Kyslik :)
  • boot() 方法是否被调用?
  • @JonasStaudenmeir 我找到了!!!现在我觉得自己像个笨蛋! :) 我的服务提供者被推迟了,所以当调用指令时它还没有定义,因为服务提供者只会在稍后阶段启动......谢谢你的时间!
  • php artisan view:clear 解决了我的问题。

标签: laravel laravel-5 blade laravel-blade


【解决方案1】:

我相信你仍然需要调用它。未经测试,但请尝试:

<div>
    @hello()
</div>

【讨论】:

  • 我也试过这样。结果相同...代码出现在视图中的事实使我相信刀片编译器无法识别它...
【解决方案2】:

我使用 Laravel 5.5,它适用于我。

AppServiceProvider.php 文件中的 boot() 函数内。

public function boot()
    {
        \Blade::directive('hello', function ($expression) {
            return "<?php echo 'Hello ' . {$expression}; ?>";
        });
    }

内景

@hello('Unai')

结果

Hello Unai

【讨论】:

    【解决方案3】:

    你的表情没问题,视图上的@hello也没问题。

    你在用Illuminate\Support\Facades\Blade吗?

    【解决方案4】:

    您必须执行以下操作

    包括这行

    use App\TraitsFolder\BladeDirectives;
    use Illuminate\Support\Facades\Blade;
    

    在你的 AppServiceProvider 类中,添加这个

    使用 BladeDirective;

    如果您的 laravel 服务器正在运行,请停止它并执行以下操作

    php artisan cache:clear
    php artisan config:clear
    php artisan view:clear
    

    然后重新启动服务器。

    【讨论】:

      猜你喜欢
      • 2019-01-31
      • 2019-01-12
      • 2019-12-19
      • 2014-11-15
      • 2013-08-21
      • 2016-03-11
      • 2013-06-04
      • 1970-01-01
      • 2019-11-30
      相关资源
      最近更新 更多