Laravel请求会话获取返回布尔值不值

时间:2019-06-26 11:34:17

标签: php laravel session

我创建了强制将路由路径包含在本地值中的中间件 而且效果很好,但是当我尝试读取区域设置会话值时,它以true的形式返回Boolean!会话的值不等于en

    <?php
namespace App\Http\Middleware;
use Closure;

class Local
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */

    public function handle($request, Closure $next)
    {    
        if($request->method() == 'GET'){
            //get local from param
            $locale = $request->segment(1);

            //if not exist i get it from app and redirect to /local
            if(!$locale || !in_array($locale, config('app.locales')))
            {
                dd($request->session()->get('locale'));
                $locale = $request->session()->get('locale') || app()->getLocale();
                $request->session()->put('locale',$locale);

                return redirect('/'.$locale.$request->getRequestUri());
            }
            //else if exist I set the local and set the session

           else
            {
                $request->session()->put('locale',$locale);
            }

        }
        return $next($request);
    }
}

1 个答案:

答案 0 :(得分:2)

更改代码以使用空合并运算符(??)。

$locale = $request->session()->get('locale') ?? app()->getLocale();

现在,它正在为您的 $ locale 变量分配条件。