0

我正在尝试为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; ?>";
    });
}
4

1 回答 1

0

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

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

于 2021-07-19T14:16:43.157 回答