Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 28.02.2020 14:29:06

Валидация разных форм

Здравствуйте. В общем вопрос такой.
Есть страница с разными настройками платежных систем. Соответственно для каждой платежной системы свои настройки.
Для всего этого используется один контроллер с методом допустим edit. В этом методе и вызывается форма для view,  и в зависимости от get запроса своя форма.

Типо такого:

public function edit(Request $request){

        $segment = \Str::lower($request -> segment(4));

        $this -> data = [
            'title' => 'Настройки шлюза'
        ];

        return view('back.gateways.options.'.$segment, $this -> data); // тут подставляется нужная форма
    }

Это проверка

public function update(GatewaysRequest $request){
        
        $gateway = $request -> segment(4);

///....

    }

Собственно как вызывать разные Request для каждой формы. Что бы проверять поля на корректность.

Не в сети

#2 01.03.2020 00:27:33

TrueKanonir
Откуда: Ташкент
Сообщений: 221

Re: Валидация разных форм

Можно в action у формы добавить к урлу что то вроде ?form=идентификатор формы.
Затем внутри GatewayRequest подставлять каждые правила для каждой формы

Изменено TrueKanonir (01.03.2020 00:28:12)

Не в сети

#3 01.03.2020 10:13:30

Re: Валидация разных форм

ну я тоже так же подумал, только не идентификатор, а скрытое поле с названием формы. Но что мне не нравиться, что будет очень жирный Request

Изменено success (01.03.2020 10:15:51)

Не в сети

#4 01.03.2020 10:52:13

Re: Валидация разных форм

        
$this->validate($request, [
  'title' => 'required',
  'category' => 'required',
  'images' => 'required',
]);

Так уже не подходит ?

Не в сети

#5 01.03.2020 12:30:15

Re: Валидация разных форм

Нет, форм более 10.

Не в сети

#6 01.03.2020 13:51:31

TrueKanonir
Откуда: Ташкент
Сообщений: 221

Re: Валидация разных форм

  1. будет очень жирный Request

Тогда можно общие (одинаковые) поля у всех форм вынести в отдельный метод в реквесте, а потом с проверкой по идентификатору формы array_merge с нужными правилами к каждой формы. Будет не так жирно.
Либо каждую форму на разные методы в контроллере. Но опять «жирно».

Не в сети

#7 01.03.2020 16:26:27

Re: Валидация разных форм

Изи...

public function update(Request $request){
    $requests = [
        'form_name1' => Gateways1Request::class,
        'form_name2' => Gateways2Request::class,
    ];
        
    $formName = $request->formName;
    $classRequest = $requests[$formName] ?? DefaultRequest::class;

    //валидация
    \App::make($classRequest);

    $gateway = $request -> segment(4);

///....

}

Не в сети

Подвал раздела