gpt4 book ai didi

laravel - 如何在 Laravel 组路由中使用动态变量?

转载 作者:行者123 更新时间:2023-12-02 13:41:38 24 4
gpt4 key购买 nike

例如:

 Route::group(['prefix' => '{lang?}'], function () {
//..
});

在中间件中创建变量:

public function handle($request, Closure $next){

$lang = session('locale');

App::setLocale($lang);

return $next($request);
});

也尝试获取前缀中的数据,但是得到了null

Route::group(['prefix' =>  config('app.locale')], function () {
//..
});

Route::group(['prefix' =>  session('locale')], function () {
//..
});

通过 session 更改语言单独路由

Route::get('setlocale/{locale}', function ($locale) {

session(['locale' => $locale]);

return redirect()->back();

})->name('setlocale');

预先感谢您的帮助。

最佳答案

您不需要将路由分组到 lang 路由下,您可以创建自己的中间件并将路由分组到该中间件下,然后在其中使用以下代码:

public function handle($request, Closure $next){
$lang = request->get('locale');
$currentLang = App::getLocale();

//If locale exists in the url and it's changed
if($lang && $lang != $currentLang) App::setLocale($lang);

//If locale doesn't exist in the url, fallback to default locale
if(!$lang) App::setLocale('en');

return $next($request);
});

网址应为 data/store?locale=en,您的网址应始终在网址中的 ? 之后附加 locale,否则,将使用您的默认区域设置

编辑:由于您的路由包含 locale 作为网址的一部分,而不是作为请求参数,那么我建议您使用一个库来为您处理这个问题,因为在您能够拥有一个有效的示例之前您将有很多事情要做:Laravel localization mcmara

关于laravel - 如何在 Laravel 组路由中使用动态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48783493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com