从Laravel 4转换到Laravel 5.尝试在控制器中访问Lang文件,如下所示:
$var = Lang::get('directory/index.str1');
这给了我:Class' App \ Http \ Controllers \ Lang'未找到。然而
{{Lang::get('directory/index.str1');}}
在视图中正常工作
答案 0 :(得分:7)
您缺少 Lang 类的 use 语句,PHP正在当前命名空间中查找它,这就是您看到 App \ Http \ Controllers的原因\ Lang 中的错误消息。
它在视图中工作,因为视图文件在全局命名空间中执行,其中 Lang 外观存在。
为了使您的代码能够正常工作,请执行以下操作之一:
为 Lang
使用完全限定的类名$var = \Lang::get('directory/index.str1');
在控制器顶部添加use语句
<?php namespace App\Http\Controllers;
use Lang;
答案 1 :(得分:1)
您也可以使用__帮助器(适用于Laravel 5.5、5.6和5.7 ...不确定其他版本)。 e。 g如果您的字符串数组存储在lang目录内名为messages.php的文件中,则要获取带有键myString的字符串,请在控制器中使用以下命令:
__('messages.myString');
在刀片模板中,您将使用:
@lang('messages.myString')