Я использую библиотеку это для функции 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, я ничего не могу понять, чтобы решить эту проблему.
@Mozammil Я использую люмен 5.7.7
почему в классе CommentFormRequest нет nanespace?
@SwaroopDeval Это там, исправлено.
Вы зарегистрировали поставщика услуг в bootstrap/app.php?
@SwaroopDeval Да, иначе он должен выдавать ошибку, когда я отправляю неверные данные.
Создавайте экземпляры валидатора с помощью метода фасада Validator::make так же, как в Laravel, поскольку все основные правила валидации доступны по умолчанию.






Это происходит потому, что 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, только по этой причине я использую библиотеку это. Таким образом, эти библиотеки вообще не будут предоставлять эту функцию.
Как я уже сказал, validated() — это метод, определенный в Laravel ФормаЗапрос. Библиотека, которую вы используете, расширяет Illuminate\Http\Request, который не имеет этой реализации. См. это.
есть ли другой подход к решению этой проблемы?
Вы можете попытаться найти другую библиотеку, в которой есть реализация. Возможно это один.
Я тоже пробовал эту библиотеку, у меня такая же проблема
Да, за библиотеку не ручаюсь. Я не использовал его, но я видел, что автор пытался его реализовать.
Какая у вас версия Lumen?