Как изменить статус http resposne для пользовательского FormRequest? - PullRequest
0 голосов
/ 09 мая 2019

Я использую следующий класс для проверки входящего запроса:

class CreateInvoiceRequest extends FormRequest
{

    public function authorize(Request $request)
    {
        return true;

    }

    public function messages()
    {
        return [
            'name.required' => 'The name is required.',
            'name.string' => 'The name should be a string',
            'code.required' => 'Code',
              'code.string' => 'Code',
              'type.required' => 'Type'
        ];
    }

    public function rules()
    {
        return [
            'name' => 'required|string',
            'type' => 'string',
            'code' => ['required', 'string', new InvoiceCode],
        ];
    }
}

В случае сбоя он возвращает данные в {errors: "The given data was invalid."} объект и http статус 200.

Как и где это изменитьстатус?Более глобальный вопрос, как обрабатывать ошибки и предупреждения в Laravel?

1 Ответ

2 голосов
/ 09 мая 2019

Вы можете добавить статус HTTP к ValidationException, выброшенному в failedValidation методе FormRequest:

use Illuminate\Contracts\Validation\Validator;
use Illuminate\Validation\ValidationException;

class CreateInvoiceRequest extends FormRequest
{
    // ...

    protected function failedValidation(Validator $validator)
    {
        throw (new ValidationException($validator))
                    ->status(500)
                    ->errorBag($this->errorBag)
                    ->redirectTo($this->getRedirectUrl());
    }

    // ...

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...