【问题标题】:How to access my lang files from controller in laravel 5如何从 laravel 5 中的控制器访问我的 lang 文件
【发布时间】:2015-07-30 16:15:25
【问题描述】:

从 Laravel 4 转换到 Laravel 5。尝试像这样访问控制器中的 Lang 文件:

$var = Lang::get('directory/index.str1');

这给了我:找不到类“App\Http\Controllers\Lang”。不过

{{Lang::get('directory/index.str1');}}

在视图中工作正常

【问题讨论】:

    标签: controller localization laravel-5


    【解决方案1】:

    您缺少 Lang 类的 use 语句,而 PHP 正在当前命名空间中寻找它,这就是您看到 App\Http\Controllers 的原因错误消息中的\Lang

    它在视图中工作,因为视图文件在全局命名空间中执行,其中存在 Lang 外观。

    为了让您的代码正常工作,请执行以下操作之一:

    1. Lang

      使用完全限定的类名
      $var = \Lang::get('directory/index.str1');
      
    2. 在控制器顶部添加 use 语句

      <?php namespace App\Http\Controllers;
      use Lang;
      

    【讨论】:

      【解决方案2】:

      您也可以使用 __ 帮助器(适用于 Laravel 5.5、5.6 和 5.7 ...不确定其他版本)。 e. g 如果您的字符串数组存储在 lang 目录中名为 messages.php 的文件中,要获取带有键 myString 的字符串,请在控制器中使用以下内容:

      __('messages.myString');
      

      在刀片模板中你会使用:

      @lang('messages.myString')
      

      【讨论】:

      • 在刀片中我可以使用这个 {{__('messages.myString')}}
      • 在我们在app\Http\Controllers 中定义的函数上使用__('file.key') 并将其共享给所有视图时,文本仍使用默认语言(即英文)。不知道为什么会这样。但是,如果它只是在返回视图页面的自定义控制器上使用它,它就可以工作(翻译文本)
      猜你喜欢
      • 2023-03-20
      • 1970-01-01
      • 2015-08-02
      • 2018-03-19
      • 2015-04-23
      • 2016-09-14
      • 1970-01-01
      • 2023-03-22
      • 2018-05-09
      相关资源
      最近更新 更多