basket; $data = $basket->getData(); $models = $basket->findModels(array_keys($data)); return $this->render('index', [ 'models' => $models, 'basket' => $basket, ]); } /** * * @return string */ public function actionSave() { $modelOrder = new Orders; /** * @var $basket Basket */ $basket = \Yii::$app->basket; $productV = $basket->getData(); if(!empty($productV) && $modelOrder->load(Yii::$app->request->post())&& $modelOrder->save()){ foreach ($productV as $index=>$row) { $modelOrdersProducts = new OrdersProducts(); $mod_id = $index; $product = ProductVariant::findOne($mod_id); /** * Проверяем товар на наличие */ if(!$product->stock > 0 || !$product->price > 0 ){ /** * Добавляем сообщение об ошибке */ \Yii::$app->getSession()->setFlash('error', 'К сожалению товара '.$product->name . ' нет в наличии'); /** * Удаляем заказ */ $modelOrder->delete(); }else { /** * Удаляем товар с массива и сохраняем в заказ */ $modelOrdersProducts->order_id = $modelOrder->id; $modelOrdersProducts->product_name = $product->product->name; $modelOrdersProducts->name = $product->name; $modelOrdersProducts->price = $productV[$index]['price']; $modelOrdersProducts->count= $productV[$index]['count']; $modelOrdersProducts->sum_cost = $productV[$index]['price'] *$productV[$index]['count'] ; $modelOrdersProducts->mod_id = $mod_id; $modelOrdersProducts->sku = $product->sku; $modelOrdersProducts->validate(); $modelOrdersProducts->save(); $productV[$index] = ArrayHelper::toArray($modelOrdersProducts); $productV[$index]['img'] = \common\components\artboximage\ArtboxImageHelper::getImageSrc($product->image->imageUrl, 'list'); } } /** * Сохраняем заказ */ if(!Yii::$app->user->id && !empty($modelOrder->email)){ $modelUser = new Customer(); $modelUser->role = 'person'; $modelUser->username = $modelOrder->email; $modelUser->name = $modelOrder->name; $modelUser->phone = $modelOrder->phone; $modelUser->password = Yii::$app->getSecurity()->generateRandomString(10); $modelUser->group_id = 2; $modelUser->save(); } $order = clone $modelOrder; /** * Чистим сессию корзины */ $modelOrder->clearBasket(); Mailer::widget( ['type' => 'order', 'subject'=> 'Спасибо за покупку', 'email' => $modelOrder->email, 'params' => [ 'order' => $order, 'variants' => $productV, ] ]); //$text = "# zakaz: ". $order->id .". V blijayshee vremya menedjer svyajetsya s Vami. (044) 303 90 15"; //Yii::$app->sms->send($order->phone, $text); Yii::$app->session['order_data']= ['order' => $order,'variants'=>$productV]; return $this->redirect(['order/success', ]); } $data = $basket->getData(); $models = $basket->findModels(array_keys($data)); return $this->render('index', [ 'models' => $models, 'basket' => $basket ]); } public function actionSuccess(){ return $this->render('success', [ ]); } }