Запросы пользовательских форм Laravel не проверяются - PullRequest
0 голосов
/ 01 мая 2018

Я создал пользовательский запрос формы в моем laravel 5.6 что-то вроде этого:

<?php

namespace Noetic\Plugins\blog\Requests;

use Illuminate\Foundation\Http\FormRequest;

class StorePostRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [

        ];
    }
}

Когда я ничего не помещаю в правила, у меня работают контроллеры, а когда я помещаю какое-либо правило внутрь, предположим, что я ставлю

return [
    'title' =>  'required',
    'body'  =>  'required',
];

Это работает до тех пор, пока не будет подтверждено true, я имею в виду, что если заголовок и тело пройдено, оно будет проверено, но когда я не отправляю данные для заголовка или тела, я не получаю ошибки в ответ, я вижу домашнюю страницу принадлежащий веб-промежуточному программному обеспечению, я хочу вернуть данные об ошибке в качестве ответа.

Мой контроллер выглядит примерно так:

public function store( StorePostRequest $request )
{
    if ($request->fails()) {
        return $this->errorResponse($request->errors()->all());
    }

    $data = $request->only('title', 'body');

    $post = Post::create($data);

    return response()->json(['post'=> $post ],200);
}

Помоги мне с этим. Спасибо

Ответы [ 2 ]

0 голосов
/ 07 мая 2019

В вашей функции контроллера вам не нужно перехватывать проверку, просто попробуйте с успешным путем.

Обработчик обработает вашу проверку

public function store( StorePostRequest $request )
{
    $data = $request->only('title', 'body');

    $post = Post::create($data);

    return response()->json(['post'=> $post ],200);
}

В вашем обработчике

use Illuminate\Validation\ValidationException;

if ($exception instanceof ValidationException)
{
    return response($exception->errors())->header('Content-Type', 'application/json');
}
0 голосов
/ 23 октября 2018

использовать Illuminate \ Contracts \ Validation \ Validator;

использовать Illuminate \ Http \ Exceptions \ HttpResponseException;

после этого

protected function failedValidation(Validator $validator) {
    throw new HttpResponseException(response()->json($validator->errors(), 422));
}
...