猿问

如何在 laravel 中翻译油门?

我正在使用 Laravel 5.7 版本。我正在使用throttleinKernel.php来避免用户发送超过 60 个查询。我想翻译它的消息“Too Many Attempts”。并使用自己的消息。我怎样才能在laravel中做到这一点?我在哪里可以找到那个?


不负相思意
浏览 148回答 4
4回答

叮当猫咪

use Symfony\Component\HttpKernel\Exception\HttpException;if($exception instanceof HttpException && $exception->getStatusCode() == 429) {return response()->json(['message' => 'Too Many Attempts','code' => 429], 429)->withHeaders($exception->getHeaders());}

GCT1015

在您的 Laravel 异常处理程序中,您可以在渲染之前处理该异常并将该异常替换为您的自定义异常。在app/Exceptions/Handler.php/** * Render an exception into an HTTP response. * * @param  \Illuminate\Http\Request  $request * @param  \Exception  $exception * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse */public function render($request, Exception $exception){    if($exception instanceof ThrottleRequestsException) {        return parent::render(            $request, new ThrottleRequestsException(                'Your message',                $exception->getPrevious(),                $exception->getHeaders(),                $exception->getCode()            )        );    }    return parent::render($request, $exception);}

阿波罗的战车

您可以在app/Http/Middlewares文件夹中创建自定义中间件,扩展基\Illuminate\Routing\Middleware\ThrottleRequests类并覆盖buildException方法(此处为原始实现)。然后将throttle中间件分配给您的自定义中间件类Kernel.php

精慕HU

我在 Laravel 的这个地址找到了它的文件: vendor\laravel\framework\src\llluminate\Routing\Middleware\ThrottleRequests.phpprotected function buildException($key, $maxAttempts)    {        $retryAfter = $this->getTimeUntilNextRetry($key);        $headers = $this->getHeaders(            $maxAttempts,            $this->calculateRemainingAttempts($key, $maxAttempts, $retryAfter),            $retryAfter        );        return new ThrottleRequestsException(            'You can change message here and put your message!', null, $headers        );    }
随时随地看视频慕课网APP
我要回答