• Как сделать пошаговую форму регистрации в Yii2?

    vitaly_74
    @vitaly_74
    делай все через js обработку всей формы делаешь в модели. данные сохраняешь в куках через js срок указываешь любой.
    Ответ написан
    Комментировать
  • Как сделать пошаговую форму регистрации в Yii2?

    GreyCrew
    @GreyCrew
    Full-stack developer
    Я вижу 2 способа
    1) на Yii2
    class User extends ActiveRecord
    {
        const SCENARIO_STEP1 = 'step1';
        const SCENARIO_STEP2 = 'step2';
        ...
    
        public function scenarios()
        {
            return [
                self::SCENARIO_STEP1 => ['attr1', 'attr2'],
                self::SCENARIO_STEP2 => ['attr3', 'attr4', 'attr5'],
            ];
        }
        ...

    отправляем в контроллер в зависимости от текущего шага нужную форму

    public function actionStep1()
    {
        $model = new OrderWizard();
        $model->setScenario(OrderWizard::SCENARIO_STEP1);
    
        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['step-2', 'id' => $model->id]);
        } else {
            return $this->render('step-1', [
                'model' => $model,
            ]);
        }
    }

    2) На Js

    • Отправляем сразу всю форму
    • Создаем состояния (шаг1, шаг2 и т.д.)
    • Показываем те элементы формы, которые удовлетворяют текущему состоянию.
    Ответ написан
    3 комментария
  • Как сделать пошаговую форму регистрации в Yii2?

    @ar2rsoft
    PHP-developer
    После регистрации любых данных в бд, записать пользователю в куки его user ID. При последуюем входе, если с таким юзер айди есть в базе данные, вытащить их и заполнить.
    Ответ написан
    2 комментария
  • Как в БД изменить значение 0 или 1 через checkbox, без обновления?

    dimastik1986
    @dimastik1986
    учусь
    да все просто...
    нужно просто разделить код на 2 части
    1. стр со списком чекбоксов
      <form>
      <input type="checkbox" class="Todo" name="DoSomething[]" value="Задача 1">Задача 1 <Br>
      <input type="checkbox" class="Todo" name="DoSomething[]" value="Задача 2">Задача 2 <Br>
      <input type="checkbox" class="Todo" name="DoSomething[]" value="Задача 3">Задача 3 <Br> 
      <input type="checkbox" class="Todo" name="DoSomething[]" value="Задача 4">Задача 4 <Br> 
      <input type="checkbox" class="Todo" name="DoSomething[]" value="Задача 5">Задача 5 
      </form>

      теперь это надо отправить на обработчик, примерно так
      <script type="text/javascript">
      $(document).ready(function() { 
          $('.Todo').on('click', function(){
              $.post('https://ссылка на обработчик',   
              $(".Todo").serialize(), 
              function(msg) { 
                  $('#answer').html(msg);
              });  
          return false; 
          });  
      });
      </script>

      - можно отправлять не массив, а каждый чекбокс отдельно, как удобно

      - на страницу с чекбоксами можно вернуть информацию от обработчика, она попадет в блок <div id="answer"></div>
      например все это дело можно оформить как всплывающий блок, накрутить немного анимации. Блок будет отображать результат обработки (удачно, нет или другая информация). Сделать это весьма просто, я думаю разберетесь на основе примеров: animate.css, position, появление и иcчезновение элементов

    2. стр обработчика
      - получаем массив, например так
      $POST['DoSomething'] = filter_input(INPUT_POST, 'DoSomething', FILTER_DEFAULT , FILTER_REQUIRE_ARRAY);

      далее обрабатывайте как вам надо.
    Ответ написан
    Комментировать