如何在 laravel 中翻译 throttle?
how to translate throttle in laravel?
我正在使用 Laravel 5.7 版本。我在 Kernel.php
中使用 throttle
以避免用户发送超过 60 个查询。我想翻译其消息 "Too Many Attempts." 并使用自己的消息。我怎样才能在 laravel 中做到这一点?我在哪里可以找到它?
我在 Laravel 这个地址找到了它的文件:
vendor\laravel\framework\src\llluminate\Routing\Middleware\ThrottleRequests.php
protected 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
);
}
在您的 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
class 并覆盖 buildException
方法 (original implementation here)。
然后将 throttle
中间件分配给 Kernel.php
中的自定义中间件 class
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());
}
我正在使用 Laravel 5.7 版本。我在 Kernel.php
中使用 throttle
以避免用户发送超过 60 个查询。我想翻译其消息 "Too Many Attempts." 并使用自己的消息。我怎样才能在 laravel 中做到这一点?我在哪里可以找到它?
我在 Laravel 这个地址找到了它的文件:
vendor\laravel\framework\src\llluminate\Routing\Middleware\ThrottleRequests.php
protected 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
);
}
在您的 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
class 并覆盖 buildException
方法 (original implementation here)。
然后将 throttle
中间件分配给 Kernel.php
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());
}