为了账号安全,请及时绑定邮箱和手机立即绑定

Lang facade 未检测到应用程序 lang 更改

Lang facade 未检测到应用程序 lang 更改

PHP
MM们 2022-12-30 17:48:50
我正在尝试使用配置控制器更改 Laravel 7 中的应用程序区域设置:class ConfigController extends Controller{    /**     *     * Set the App locale.     *     * @param  \SetLocaleRequest  $request     * @return mixed     */    public function set_locale(SetLocaleRequest $request)    {        App::setLocale($request->locale);        return response()->json([            'message' => trans('config.set'),        ], 200);    }}这段代码实际上有效,因为一个简单App:getLocale();的返回提供的语言。无论哪种方式,Lang外观都会继续使用提供的默认语言环境,config/app.php即西班牙语。所以,这段代码:Lang::get('auth.failed')正在返回文本:"Estas credenciales no coinciden con nuestros registros."即使en当前已选中。知道为什么吗?
查看完整描述

1 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

动态更改语言环境是 2 个步骤。我看到你已经完成了第 1 步。第 2 步是在你的刀片文件中做这样的事情(很可能是基本模板):


<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">

请注意,一旦用户导航到另一个页面,它就会返回到配置中设置的语言环境。但是,如果您需要为当前用户维护区域设置,请使用会话。例如,除了我之前的观点之外,将您的控制器方法更改为:


public function set_locale(SetLocaleRequest $request)

    {

        App::setLocale($request->locale);

        Session::put('locale', $request->locale);


        return response()->json([

            'message' => 'locale.set.success',

        ], 200);

    }


因此,您可以通过以下方式在刀片模板中连续访问它:<html lang="{{ str_replace('_', '-', Session::get('locale')) }}">


查看完整回答
反对 回复 2022-12-30
  • 1 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信