سبد خرید در 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;
    }
}
ارسال‌ها

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

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

ارسال‌ها

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

نویسنده : خنجی بازدید : 1 تاريخ : شنبه 7 بهمن 1396 ساعت: 3:38
برچسب‌ها :
اخبار و رسانه هاهنر و ادبیاترایانه و اینترنتعلم و فن آوریتجارت و اقتصاداندیشه و مذهبفوتو بلاگوبلاگ و وبلاگ نویسیفرهنگ و تاریخجامعه و سیاستورزشسرگرمی و طنزشخصیخانواده و زندگیسفر و توریسمفارسی زبان در دیگر کشورها