Laravel中间件非数据库值的对象

Laravel中间件非数据库值的对象

问题描述:

我最近开始使用php Laravel,所以我可能不在这里,但我认为它不会受到伤害。Laravel中间件非数据库值的对象

我想确定每个用户的首选语言。在blades上这样做可以完成工作,但我读到它应该设置在blade页面之外。

我做了一个新的Middleware,我可以在那里设置它,但我不确定它为什么没有抓住实际的database值。

public function handle($request, Closure $next) 
{ 
     if (Auth::User()) 
      App::setLocale(Auth::User()->lang); 
     else 
      App::setLocale('en'); 

    return $next($request); 
} 

这部分App::setLocale('en');工作正常,它设置所有页面的语言环境。在Auth::User()之上的条件永远不会成立,尽管基于lang值从未设置区域设置。当我尝试运行它时,它会给出ErrorException - Trying to get property of non-object错误。

任何帮助,将不胜感激。

+0

我现在不能测试这个,但不是'Auth :: user()'区分大小写? 'Auth :: User()'--->'Auth :: user()' –

BUDDY! 尝试$locale = App::getLocale();而不是Auth::User()->lang 你欠我一个国际足联比赛!