【问题标题】:Laravel - Send data from middleware to routeLaravel - 将数据从中间件发送到路由
【发布时间】:2021-04-06 12:46:44
【问题描述】:

我正在尝试从中间件中的句柄函数发送一些数据:

<?php

namespace App\Http\Middleware;

class LanguageSwitcher
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (!Session::has('locale'))
         {
           Session::put('locale',Config::get('app.locale'));
        }
        App::setLocale(session('locale'));
        
        $locale = session('locale'); // => The data I want to send
        
        return $next($request);
    }
}

我的 web.php:

Route::group(['middleware'=>'language'], function () {
    // I want to set the prefix to locale here, but it's undefined
    Route::group(['prefix' => $locale], function () {

    });
});

我尝试使用Session::get('locale') 在 web.php 中获取 $locale,但我得到了 Null。 那么,有没有办法从中间件发送到路由呢?

【问题讨论】:

  • 并且App::getLocale()设置为默认值,所以我也不能用了!
  • 你可以使用 [Laravel Localization](github.com/mcamara/laravel-localization) 安静地处理这一切。
  • 针对您的情况的一个肮脏解决方案是:您可以在路由中使用session('locale')
  • 下面的所有答案都是完全没用的。标题与语言环境无关。当我搜索这个时,我希望找到标题中提出的问题的答案。这当然是 OP 的错,而不是回答者的错。

标签: php laravel middleware


【解决方案1】:

您想使用语言环境来支持多语言。您可以在中间件中设置区域设置并在您的路线中使用区域设置。这是我的例子https://pastebin.pl/view/c5034cb9

【讨论】:

    猜你喜欢
    • 2015-11-12
    • 2017-09-21
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 2022-12-12
    • 2013-01-25
    • 2021-05-27
    相关资源
    最近更新 更多