我用Laravel 10开发了多语言网站.一切都运行得很好,因为Composer不支持我的服务器上的laravel 10库,所以我创建了一个laravel 9项目并只移动了以下文件夹;
/app
/public
/resources
/routes
/composer.json
然后我做了Composer安装和php artisan优化,结果是成功的.但问题是,当我访问我的网站时,我收到以下错误:
setlocale(): Argument #1 ($category) must be of type int, Illuminate\Http\Request given
/app/Http/Kernel.php :个
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
**\App\Http\Middleware\SetLocale::class**, // <- **locale class is here**
],
'api' => [
// \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
\Illuminate\Routing\Middleware\ThrottleRequests::class.':api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
protected $middlewareAliases = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \App\Http\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
**'setlocale' => \App\Http\Middleware\SetLocale::class,**
];
/app/Http/Middleware/SetLocale.php个
class SetLocale {
public function handle(Request $request, Closure $next)
{
if (Session::has('locale')) {
App::setLocale(Session::get('locale'));
}
return $next($request);
}
}
/routes/web.php个
Route::get('/', function () {
return redirect(app()->getLocale());
})->name('home');
Route::get('/setlang', [Controller::class, 'changeLanguage'])->name('setlang');
Route::group(
[
'prefix' => '{locale}',
'where' => ['locale' => '[a-zA-Z]{2}'],
'middleware' => 'setlocale'
],
function () {
Route::get('/', [Controller::class, 'homeview']);
});