@aassdds
Люблю борщ и PHP

Можно ли добавить кастомное значение в $request->validated() на этапе валидации?

Добрый день!
Laravel 5.8

TestController.php
class TestController extends Controller{
    public function test(TestRequest $request){
        dd($request->validated());
    }
}


TestRequest.php
class TestRequest extends FormRequest{
    public function authorize(){ return true; }

    public function rules(){
        return [ "id" => "nullable" ];
    }

    public function withValidator(\Illuminate\Validation\Validator $validator)
    {
        if(! $validator->fails()) {
            $validator->after(function ($validator) {
                   // ЧТО НУЖНО НАПИСАТЬ ВОТ ТУТ, ЧТОБЫ В $request->validated(), который используется в методе контроллера, было доступно не только поле "id" из правил, но и еще например  "a" = 5;
            });
        } // if
    } // func
} // class


Основной вопрос - именно в том, чтобы в методе контроллера, $request->validated() содержал НЕ ТОЛЬКО то что было в rules(), но и что то кастомное, добавляемое например в $validator->after(function ($validator)
  • Вопрос задан
  • 73 просмотра
Пригласить эксперта
Ответы на вопрос 1
delphinpro
@delphinpro Куратор тега Laravel
frontend developer
Можно добавлять данные ДО валидации

protected function prepareForValidation()
{
    if (!$this->input('role.slug')) {
        $updatedInput = $this->collect('role')->merge([
            'slug' => Str::slug($this->input('role.name'), '_'),
        ])->toArray();

        $this->merge(['role' => $updatedInput]);
        Request::merge(['role' => $updatedInput]);
    }
}


https://qna.habr.com/q/1227502
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы