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

pro*_*ist 7 localization controller laravel-5

从Laravel 4转换到Laravel 5.尝试在控制器中访问Lang文件,如下所示:

$var = Lang::get('directory/index.str1');
Run Code Online (Sandbox Code Playgroud)

这给了我:没有找到Class'App\Http\Controllers\Lang'.然而

{{Lang::get('directory/index.str1');}}
Run Code Online (Sandbox Code Playgroud)

在视图中工作正常

Ben*_*oki 10

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

__('messages.myString');
Run Code Online (Sandbox Code Playgroud)

在刀片模板中,您将使用:

@lang('messages.myString')
Run Code Online (Sandbox Code Playgroud)


jed*_*ylo 8

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

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

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

  1. 使用Lang的完全限定类名

    $var = \Lang::get('directory/index.str1');
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在控制器顶部添加use语句

    <?php namespace App\Http\Controllers;
    use Lang;
    
    Run Code Online (Sandbox Code Playgroud)