Несколько этапов регистрации с помощью Pjax

217
24 февраля 2018, 22:32

Доброго времени суток. Буквально только что разобрался с Pjax-ом, но теперь есть задача посложнее. Сейчас пробую реализовать регистрацию через Pjax, регистрация из 3 етапов, и у каждой есть своя страница с урлом и методом в контроллере.

Контоллер:

public function actionFirststep(){
if ($registrationForm->load(Yii::$app->request->post())) {
   return $this->redirect(['/usercabinet/registration/secondstep']);
   }
 return $this->render('index', ['model' => $registrationForm]);
}

public function actionSecondstep(){
if ($registrationForm->load(Yii::$app->request->post())) {
    return $this->redirect(['/usercabinet/registration/success']);
    }
 return $this->render('secondStep', ['model' => $registrationForm]);
}

public function actionSucces(){
   return $this->render('success');
}

Реально ли сделать такое Pjax-ом? Именно переход с первого етапа на второй(Со второго етапа на successs сложностей не возникает).

Answer 1

Вариант с несколькими действиями и контроллерами неверен.

В одном ActiveForm можно обработать несколько моделей. Выглядит это так.

// Контроллер
public function actionCreate()
{
   $user = new User();
   $profile = new Profile();
   // тут обработка и запись в базу данных в разные таблицы.
   if($user->load(Yii::$app->post()) && $profile->load(Yii::$app->post())){
       $validData = $user->validate();
       $validData = $profile->validate() && $validData;
       if($validData){
          $user->save(false);
          $profile->save(false);
          return $this->redirect('success');
       }      
    }
   // подключение представления с формой.
   return $this->render('create', ['user' => $user, 'profile' => $profile);
}

В самом представлении с формой делаете так.

$form = ActiveForm::begin();
  echo $form->field('user', 'username')->textInput();
  echo $form->field('profile', 'address')->textInput();
ActiveForm::end();

Точно так же при обновлении записи. Две модели передаёте в этот же вид. Отправляете при помощи ajax(pjax).

READ ALSO
Помощь с выражением preg_match php

Помощь с выражением preg_match php

Подскажите пожалуйста, как добавить в условие только латинские буквы, цифры, знак =, знак + и /

175
Как выводить изображение по GET запросу?

Как выводить изображение по GET запросу?

С GET я знаком, а вот как выводить jpg, txt, js и так далее, не умею

173