如何从 laravel 5 中的控制器访问我的 lang 文件

How to access my lang files from controller in laravel 5

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

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

这给我:Class 'App\Http\Controllers\Lang' 未找到。不过

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

在视图中工作正常

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

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

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

  1. Lang

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

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

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

__('messages.myString');

在 blade 模板中,您将使用:

@lang('messages.myString')