e236286
@e236286

Как лучше сделать wizard form в yii2?

У меня есть форма, где в несколько этапов проходит заказ товаров типа wizard form...

1) Я ее могу реализовать в одном view через tab-pane, но как валидировать формочки от перехода одного таба к другому... Или вообще другое решение есть?

2) Мне посоветовали сделать по типу "actionCreate", но после удачного сохранения сделать редирект на следующий шаг заполнения анкеты, но тогда будут лишние 2-3 таблицы и модели... как рабочий пример ниже:

public function actionShipping($id)
    {
        $model = new OrderDeliveryMethod();

        $model->order_id = $id;

        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['payment', 'id' => $model->id]);
        } else {
            return $this->render('shipping', [
                'model' => $model,
            ]);
        }
    }

    public function actionPayment($id)
    {
        $model = new OrderPaymentMethod();
        $model->order_id = $id;
        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['review', 'id' => $model->id]);
        } else {
            return $this->render('payment', [
                'model' => $model,
            ]);
        }
    }

    public function actionReview($id)
    {
        return $this->render('review', [
            'model' => $this->findModel($id),
        ]);
    }


Он работает, но правильно ли так делать?
  • Вопрос задан
  • 1218 просмотров
Решения вопроса 1
qonand
@qonand
Software Engineer
1) Я ее могу реализовать в одном view через tab-pane, но как валидировать формочки от перехода одного таба к другому... Или вообще другое решение есть?

Не изобретайте велосипед, есть куча готовых расширений позволяющих это сделать например вот это или это . Вообще подобных расширений полно, достаточно погуглить например так
2) Мне посоветовали сделать по типу "actionCreate", но после удачного сохранения сделать редирект на следующий шаг заполнения анкеты,

Тут все зависит от устройства Вашей системы. Если система предусматривает что пользователь может бросить заполнение анкеты, а через пару дней вернуться к месту на котором он остановился (и все ранее введенные им данные будут загружены) - тогда такая реализация имеет место. Если же подобной схемы не предусмотрено лучше избежать подобной реализации т.к. получите кучу не консистентных данных
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы