【发布时间】:2016-07-29 17:10:30
【问题描述】:
我有一个中间件,通过在每次请求之前从会话中获取值来设置我的 laravel 应用程序的语言环境。
我有一个设置这个变量的路由,我把这个中间件应用到所有路由,包括这个。
这是我的中间件:
namespace App\Http\Middleware;
use App;
use Closure;
use Session;
class LocaleMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if(Session::has('locale')){
App::setLocale(Session::get('locale'));
}
return $next($request);
}
}
这是我设置语言的途径
public function setLang(string $lang)
{
Session::put('locale', $lang);
return back();
}
现在问题来了。如果我将该中间件设置为全局,在内核文件中,它不会生效。区域设置不正确。
如果我手动将该中间件应用到每条路由,它就可以工作。
如果我将该中间件分配给 web 中间件组,在内核文件中,它会自动应用于所有路由,它也可以工作。
这让我很困惑。请与我分享您的建议!谢谢:)
【问题讨论】:
-
愚蠢的问题。您是否在
Kernel.php内部添加了中间件数组? -
发布您的
kernel.php -
我刚才在问题中说了什么?如果我将中间件设为全局,在内核中,它不起作用。如果我将中间件分配给内核中的 web 组,它可以工作跨度>
标签: php laravel-5.2 middleware