سبد خرید در yii2

ساخت وبلاگ

با سلام 
من برای ساخت سبد خرید هیچ مشکلی ندارم به صورت عادی یک سشن ایجاد می کنم و کد محصول را در آن به عنوان کلید تعیین و می کنم و مقدار کلید را تعداد خرید تعیین می کنم 
1- حالا مشکل من اینجاست که کالای من دارای رنگ و سایز هست یعنی کاربر هنگام خرید باید رنگ و سایز کالا را هم انتخاب کند این را چطور به این سشن اضافه کنم ؟
2- چطور رنگها را در بخش مدیریت و تعریف کالا با چک باکس انتخاب و در فیلد رنگ یا سایز جدول محصولات اضافه کنم و در نمایش کالا به صورت رادیو نشون بدم؟

ارسال‌ها

تشکر شده توسط:

1- توی هر عنصر سشن شما میتونین هر چیزی ذخیره کنین. مثلاً یک آرایه که شامل تعداد و رنگ و سایز هست. مثال:
$cart = Yii::$app->session->get('cart');
$cart[] = ['id' => 5, 'qty' => 1, 'color' => 'blue', 'size' => 'large'];
Yii::$app->session->set('cart', $cart);

2- یک جدول باید برای رنگ‌ها و سایزها داشته باشین و هر رنگی که در سیستم تعریف میکنین، توی این جدول بگذارین. بعد یک جدول واسط تعریف کنید برای ارتباط بین رنگ‌ها و محصولات. اگه یه محصول 5 رنگ داشته باشه، باید 5 رکورد در این جدول ثبت بشه که در همه‌ی این رکوردها، id محصول ثابت و id رنگ متغیره. موقع نمایش محصول به مشتری هم تمام رنگ‌هایی که توی این جدول واسط هستن و با id محصول ارتباط دارن رو بصورت radio نمایش بدین. باید از ارتباط «چند به چند» استفاده کنید.
وب‌سایتارسال‌ها

تشکر شده توسط:

انجام دادم دست درد نکنه
ولی الان مشکلی که دارم من به شکل زیر اینها را تعریف کردم و صفحه خطا میده
رنگ بندی : where(['productID' => $product->id])->all() as $color) : ?> color->name ?>

خب حالا من می خوام به سبد خرید اضافه کنم خطا میده
 افزودن به سبد خرید', ['/cart/add', 'id' => $product->id, 'color' => $_GET['colors'], 'size' => $_GET['sizes']], ['class' => 'btn btn-success pull-left']) ?>
ارسال‌ها

تشکر شده توسط:

کلاس اضافه و حذف کردن به شکل زیر بود حالا چطور با این شرایط تغییرش بدم
loadModel($id); $cart = Yii::$app->session->get('cart'); if(!isset($cart['id']) == $id){ $cart[] = ['id' => $id, 'qty' => 1, 'color' => $color, 'size' => $size]; } else { $cart[] = ['id' => $id, 'qty' => 2, 'color' => $color, 'size' => $size]; } Yii::$app->session->set('cart', $cart); $this->goBack(); } public function actionPlus($id) { $this->loadModel($id); $cart = Yii::$app->session->get('cart'); $cart['id']['qty']++; Yii::$app->session->set('cart', $cart); $this->goBack(); } public function actionSub($id) { $this->loadModel($id); $cart = Yii::$app->session->get('cart'); if(isset($cart[$id])){ $cart[$id]--; if($cart[$id] <= 0){ unset($cart[$id]); } Yii::$app->session->set('cart', $cart); } $this->goBack(); } public function actionRemove($id) { $this->loadModel($id); $cart = Yii::$app->session->get('cart'); if(isset($cart['id'])){ unset($cart[$id]); Yii::$app->session->set('cart', $cart); } $this->goBack(); } public function actionClear() { Yii::$app->session->set('cart', []); $this->goHome(); } public function actionSave() { $carts = Yii::$app->session->get('cart'); if(empty($carts)){ $this->goHome(); } $total = 0; foreach($carts as $cart){ if($model = $this->loadModel($cart['id'])){ $total += $model->price * $cart['qty']; } } $total += 70000; $order = new Orders(); $order->userID = Yii::$app->user->id; $order->totals = $total; $order->ts = time(); $order->confirm = 0; if($order->save()){ foreach ($carts as $cart){ if($model = $this->loadModel($cart['id'])){ $orderData = new Orderdata(); $orderData->orderID = $order->id; $orderData->productID = $id; $orderData->quntity = $cart['qty']; $orderData->colorID = $cart['color']; $orderData->sizeID = $cart['size']; $orderData->save(); } } } Yii::$app->session->set('cart', []); return $this->redirect(['/members/index']); } public function actionView() { $cart = Yii::$app->session->get('cart'); if(empty($cart)){ $this->goHome(); } Yii::$app->user->returnUrl = Url::to(); return $this->render('view', compact('cart')); } private function loadModel($id) { $model = Products::findOne(['id' => $id, 'confirm' => 1]); if(!$model || !$model->category->confirm) { throw new HttpException(404, 'محصول مورد نظر یافت نشد'); } return $model; }
}
ارسال‌ها

تشکر شده توسط:

دوستان کسی نیست راهنمایی کنه؟

ارسال‌ها

تشکر شده توسط:

برنامه نویس...
ما را در سایت برنامه نویس دنبال می کنید

برچسب : نویسنده : خنجی prog بازدید : 275 تاريخ : شنبه 7 بهمن 1396 ساعت: 3:38

خبرنامه