Ошибка выдачи Laravel/Lumen formRequest при отправке всех допустимых значений

Я использую библиотеку это для функции 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, я ничего не могу понять, чтобы решить эту проблему.

Какая у вас версия Lumen?

Mozammil 30.01.2019 13:03

@Mozammil Я использую люмен 5.7.7

Mahesh.D 30.01.2019 13:07

почему в классе CommentFormRequest нет nanespace?

Swaroop Deval 30.01.2019 13:39

@SwaroopDeval Это там, исправлено.

Mahesh.D 30.01.2019 13:43

Вы зарегистрировали поставщика услуг в bootstrap/app.php?

Swaroop Deval 30.01.2019 13:53

@SwaroopDeval Да, иначе он должен выдавать ошибку, когда я отправляю неверные данные.

Mahesh.D 30.01.2019 13:56

Создавайте экземпляры валидатора с помощью метода фасада Validator::make так же, как в Laravel, поскольку все основные правила валидации доступны по умолчанию.

Vishnu R 19.11.2021 10:15
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
7
833
1

Ответы 1

Это происходит потому, что validated() не существует в классе CommentFormRequest.

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

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

Также есть важное замечание по документация от Lumen.

Form requests are not supported by Lumen. If you would like to use form requests, you should use the full Laravel framework.

спасибо за Ваш ответ. Да, я также упомянул в своем вопросе, что Lumen не имеет функции FormRequest, только по этой причине я использую библиотеку это. Таким образом, эти библиотеки вообще не будут предоставлять эту функцию.

Mahesh.D 30.01.2019 13:23

Как я уже сказал, validated() — это метод, определенный в Laravel ФормаЗапрос. Библиотека, которую вы используете, расширяет Illuminate\Http\Request, который не имеет этой реализации. См. это.

Mozammil 30.01.2019 13:26

есть ли другой подход к решению этой проблемы?

Mahesh.D 30.01.2019 13:42

Вы можете попытаться найти другую библиотеку, в которой есть реализация. Возможно это один.

Mozammil 30.01.2019 13:44

Я тоже пробовал эту библиотеку, у меня такая же проблема

Mahesh.D 30.01.2019 13:56

Да, за библиотеку не ручаюсь. Я не использовал его, но я видел, что автор пытался его реализовать.

Mozammil 30.01.2019 14:05

Другие вопросы по теме