Ошибка выдачи Laravel / Lumen formRequest при отправке всех допустимых значений - PullRequest
0 голосов
/ 30 января 2019

Я использую эту библиотеку для функции formRequest в моем приложении Lumen.Я установил и настроил, как упомянуто в документации, но, кажется, есть место, где я могу отсутствовать или проблема в библиотеке.Ниже приведен мой пример кода

Класс проверки:

<?php
namespace App\Http\Requests;

use Pearl\RequestValidate\RequestAbstract;
use Illuminate\Validation\Rule;
use Illuminate\Http\Response;

class CommentFormRequest extends RequestAbstract
{

    /**
     * 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 [
            'name' => 'required'    
            'title' => 'required|max:255',
            'body' => 'required',
        ];
    }

    /**
     * Get custom messages for validator errors.
     *
     * @return array
     */
    public function messages()
    {
        return [
            //
        ];
    }
}

Контроллер:

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests\CommentFormRequest;

class CommentController extends Controller
{

    public function add(CommentFormRequest $request)
    {
        $request->validated();

       return response()->json(['Success']);
    }       

}

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

(1/1) BadMethodCallException
Method App\Http\Requests\CommentFormRequest::validated does not exist.

Выше ошибки полностью вызывает путаницу, потому что, если метод validated не найден, то как его ошибка выброса недействительных данных?Я пытался отладить проблему, но, поскольку я новичок в Lumen, я ничего не смог понять, чтобы решить эту проблему.

1 Ответ

0 голосов
/ 30 января 2019

Причина, по которой это происходит, заключается в том, что validated() не существует в классе CommentFormRequest.

CommentFormRequest extends RequestAbstract, который в свою очередь расширяет Illuminate\Http\Request, но ни один из этих классов не имеет реализации для validated().

Я понимаю, что путаница возникает из-за того, что у Laravel есть метод $request->validated(), который выводит проверенные поля, но это что-то специфическое для запроса формы Laravel.Как вы можете видеть из API , вместо него определено validated().

В документации Люмена также есть важное замечание.

Запросы форм не поддерживаются Lumen.Если вы хотите использовать запросы формы, вы должны использовать полную платформу Laravel.

...