Laravel - одна форма для разных контроллеров - PullRequest
0 голосов
/ 27 августа 2018

У меня есть многоэтапная форма регистрации, которая будет отправлять данные с одинаковой отправкой на три разных контроллера ресурсов (для сохранения функции) и таким образом модели.

Контроллер формы:

class Registration extends Controller
{


    public function index() {

        return view('admin.registration');
    }

    public function store(Request $r) {
        Controller1::store($r->step1)
        Controller2::store($r->step2)
        Controller3::store($r->step3)
    }
}

Как может быть хорошей практикой?

1 Ответ

0 голосов
/ 30 августа 2018

Нет необходимости вызывать 3 разных контроллера, скорее вам следует взаимодействовать с 3 разными моделями. Исходя из вашего кода, я предполагаю, что вы отправляете форму на Registration@store. Вот как код

Предположим, у вас есть 3 шага формы

  1. Шаг 1: получите электронную почту пользователя, пароль мобильного телефона
  2. Step2: адреса пользователей и страна
  3. Шаг 3: Профиль компании пользователя

Как только форма отправлена, она запускает метод store. Я также предполагаю, что у вас есть 3 стола и 3 modal т.е. User, Profile, CompanyProfile.

В таком случае мой метод будет таким:

public function store(Request $request) {
$data['name'] = $request->get('name');
$data['email'] = $request->get('email');
....................................
....................................
$user  = User:create($data)  //This will create your user modal instance

//Now upload the 2nd steps data

$step2['user_id'] = $user->id;
$step2['locality'] = $request->get('locality');
.....................................
....................................
Profile::create($step2);


$step3['user_id'] = $user->id;
$step3['locality'] = $request->get('locality');
.....................................
....................................
CompanyProfile::create($step3);

return redirect('/home')  //or whereever you want to redirect your user
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...