@lzy

Как передать значение от одного action в другой в Yii2?

Добрый день. Никак не могу передать номер заказа Корзины из одного action в другой, то есть в корзине человек делает заказ, данные сохраняются в базу, а затем следует открывать Success страницу данного ордера. Ка это сделать? Прикрепляю actionView и actionSuccess()

P.S: Нужно правильно redirect прописать

public function actionView(){
        $session = Yii::$app->session;
        $session->open();
        $this->setMeta('Корзина');
        $order = new Order();
        if($order->load(Yii::$app->request->post())){
            $order->qty = $session['cart.qty'];
            $order->sum = $session['cart.sum'];

            if($order->save()){
                $this->saveOrderItems($session['cart'], $order->id);
                Yii::$app->session->setFlash('Success', 'Ваш заказ принят.');
                //Send message
                Yii::$app->mailer->compose('order', ['session'=>$session])
                    ->setFrom(['site@mail.ru' => 'yii2.loc'])
                    ->setTo($order->email)
                    ->setSubject('Заказ с сайта')
                    ->send();

                Yii::$app->mailer->compose('order', ['session'=>$session])
                    ->setFrom(['site@mail.ru' => 'yii2.loc'])
                    ->setTo(Yii::$app->params['adminEmail'])
                    ->setSubject('Заказ с сайта')
                    ->send();

                $session->remove('cart');
                $session->remove('cart.qty');
                $session->remove('cart.sum');
                return $this->refresh();
            }
            else{
                Yii::$app->session->setFlash('Error', 'Ошибка');
            }
        }
       //Как перекинуть человека на Success page с данным ордером id???
        return $this->render('view', compact('session', 'order'));
    }

protected function saveOrderItems($items, $order_id){
        foreach ($items as $id=> $item){
            $order_items = new OrderItems();
            $order_items->order_id = $order_id;
            $order_items->product_id = $id;
            $order_items->name = $item['name'];
            $order_items->price = $item['price'];
            $order_items->qty_item = $item['qty'];
            $order_items->sum_item = $item['price'] * $item['qty'];
            $order_items->save();
        }
    }

public function actionSuccess($id) {
        $session = Yii::$app->session;

        $model = Order::findOne($id);
        return $this->render('success');
    }
  • Вопрос задан
  • 267 просмотров
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
Доброе утро.
Вместо return $this->refresh(); делайте return $this->redirect('path_to_action')
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы