如何从 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 门面。
为了让您的代码正常工作,请执行以下操作之一:
为 Lang
使用完全限定的 class 名称
$var = \Lang::get('directory/index.str1');
在控制器顶部添加 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')
正在从 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 门面。
为了让您的代码正常工作,请执行以下操作之一:
为 Lang
使用完全限定的 class 名称$var = \Lang::get('directory/index.str1');
在控制器顶部添加 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')