【问题标题】:How to change custom blade directive value dynamically如何动态更改自定义刀片指令值
【发布时间】:2021-09-27 04:43:48
【问题描述】:

我正在尝试为 Stichoza /google-translate-php 包创建刀片指令。但是当我从菜单中更改语言时,它会更改一次。当我再次尝试更改它时,它不会改变。只有当我运行php artisan view:clear 命令时它才会起作用。

这是我在AppServiceProvider中的指令

public function boot()
{
    Blade::directive('translate',function ($text){
        $lang =app()->getLocale();
        $changedText = GoogleTranslate::trans($text, $lang, 'en');

        return "<?php echo $changedText; ?>";
    });
}

【问题讨论】:

    标签: php laravel laravel-blade laravel-8 laravel-cache


    【解决方案1】:

    您正在生成一个静态字符串,因为一旦将刀片视图编译为 PHP 并将 PHP 缓存在该文件中就不会改变,这只是您回显一个字符串(不会改变,因为它是一个静态字符串) .

    如果您希望它实际上是动态的,您可能希望从指令返回的 PHP 获取语言环境并调用 GoogleTranslate::trans,因为刀片视图的编译版本中的 PHP 是每次视图运行时运行的内容渲染,而不是刀片指令(此时没有刀片)。

    【讨论】:

      猜你喜欢
      • 2015-10-13
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      • 2015-11-10
      • 2015-03-06
      • 2014-05-03
      • 2016-12-15
      • 2019-11-19
      相关资源
      最近更新 更多