来自Jetstream/Fortify的Laravel本地化和路线 [英] Laravel localization and routes from Jetstream / Fortify

查看:30
本文介绍了来自Jetstream/Fortify的Laravel本地化和路线的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个新的Laravel项目要做。我们希望提供多种语言版本。

我从JetStream开始这个项目。身份验证等的路由由Jetstream/Fortify自动处理。然后我添加了https://github.com/mcamara/laravel-localization来处理本地化。它适用于我自己创建的路线:

Route::group(
    [
        'prefix' => LaravelLocalization::setLocale(),
        'middleware' => [ 'localeSessionRedirect', 'localizationRedirect', 'localeViewPath' ]
    ], function()
{
    Route::get('/', function () {
        return view('welcome');
    });

    Route::middleware(['auth:sanctum', 'verified'])->get('/dashboard', function () {
        return view('dashboard');
    })->name('dashboard');
});

但是如何在Jetstream和Fortify处理的路由上设置群、前缀和中间件?

[编辑]

根据@tefo的一些建议,我正在尝试添加一个中间件来处理区域设置。添加:

Fortify.php:

    'path' => '{lang}',
    'middleware' => ['web', 'setLang']

新中间件设置语言:

class SetLang {
    /**
     * Handle an incoming request.
     *
     * @param IlluminateHttpRequest $request
     * @param Closure $next
     * @return mixed
     */
    public function handle(IlluminateHttpRequest $request, Closure $next) {
        // $lang = 'en';
        // $request->attributes->add(['lang' => 'en']);
        $request->route()->setParameter('lang', 'en');
        // $request->request->set('lang', 'en');

        return $next($request);
    }
}

已将中间件添加到$routeMiddleware

尝试联系http://mylaravel/en/login时收到此错误:

ErrorException
Missing required parameters for [Route: login] [URI: {lang}/login]. (View: /var/www/resources/views/auth/login.blade.php)

推荐答案

最终成功完成此操作。我只是简单地禁用了Fortify和Jetstream中的路由,复制了它们,并将它们推送到我分组的前缀路由中。仍在使用https://github.com/mcamara/laravel-localization,但它应该以任何您想要的方式工作--创建您自己的系统或其他什么,只要您控制好路线就可以了。

Jetstream ServiceProvider中:

public function register() {
        Jetstream::ignoreRoutes();
    }

FortifyServiceProvider中:

public function register() {
        Fortify::ignoreRoutes();
    }

并将路由从Fortifyvendor/laravel/fortify/routes/routes.php和Jetstreamvendor/laravel/jetstream/routes/livewire.php复制到您的web.php文件中,该文件包含您需要的前缀。

这篇关于来自Jetstream/Fortify的Laravel本地化和路线的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆