Идентификатор продукта магазина Yii2 через запятую

Я хочу добавить proid в $ model-> product, который находится в другой таблице. Я хочу получить идентификатор продукта, который добавлен в корзину, и сохранить их в БД (phpmyadmin) через запятую.

controller.php (откуда я получаю сеанс)

class CartController extends \yii\web\Controller
{
    public $totalItems=0;
    public $totalPrice=0.00;
    //public $netPrice = 0;

    public function actionAdd($id = null)
    {
        if (!intval($id) || empty($id)){
           Yii::$app->session->setFlash('error','cannot find this product');
            return $this->redirect('/front');

        }

        if (!isset(Yii::$app->session['cart'])){
            Yii::$app->session['cart'] = [];
            Yii::$app->session['total_items'] = 0;
            Yii::$app->session['total_price'] = 0.00;

        }
           $this->addtocart($id);

           $this->setTotal();
           //$model = new Orders();
           //$model->ordername = ;
              // $model->ordertotal = $netPrice ;
            return $this->redirect('index');


    }
    public function addtocart($id){
        if (isset(Yii::$app->session['cart'][$id])){
            $session = Yii::$app->session['cart'];
            $session[$id]= $session[$id] +=1;
            Yii::$app->session['cart']= $session;
        }
        else{
            $session = Yii::$app->session['cart'];
            $session[$id] = 1;
            Yii::$app->session['cart'] = $session;
        }
    }
    public function setTotal(){
        Yii::$app->session['total_items']=$this->totalItems(Yii::$app->session['cart']);
        Yii::$app->session['total_price']=$this->totalPrice(Yii::$app->session['cart']);

        $this->totalItems = Yii::$app->session['total_items'];
        $this->totalPrice = Yii::$app->session['total_price'];





    }
    public function totalItems($cart){
        $totalItems = 0;
        if (is_array($cart)){
            foreach ($cart as $id=>$qty){
                $totalItems += $qty;
            }

            return $totalItems;
        }
        //return $totalItems;
    }
    public function totalPrice($cart){
        $netPrice = 0.00;
        if (is_array($cart)){
            foreach ($cart as $id=>$qty){
                $item = $this->findProduct($id);
                $netPrice += $item->price * $qty;
            }
            //return $netPrice;
        }
        return $netPrice;
    }


    public function findProduct($id){
        return Products::findOne($id);
    }
    public function updateCart(){
        foreach(Yii::$app->session['cart'] as $id=>$qty){
            if (isset($_POST[$id])){
                if ($_POST == 0){
                    $session = Yii::$app->session['cart'];
                    unset($session[$id]);
                    Yii::$app->session['cart'] = $session;
                }
                else{
                    $cart = Yii::$app->session['cart'];
                    $cart[$id] = $_POST[$id];
                    Yii::$app->session['cart'] = $cart;
                }
            }
        }
    }


    public function actionIndex()
    {
        if (!isset(Yii::$app->session['cart']) || empty(Yii::$app->session['cart'])){
            Yii::$app->session->setFlash('error','cart is empty');

        }
// i made a table named order with colums ordertotal and products where ordertotal should store the total value and products should store the product id which are added to cart got the order total but didn't get products
            $model = new Orders();
            $model->ordertotal = $this->totalPrice(Yii::$app->session['cart']); //got the order total from this 
           //$model->product=add the product id( <?= Html::a('AddToCart',['/cart/add','id'=> $p->proid], ['class' => 'btn btn-success']) ?> //this is my product page where i 'add to cart' from) seperated by comma

        if ($model->save()){
            print_r('ok');

        }
        else{
           echo $model->getErrors();

        }



        return $this->render('index',[
            'totalItems' => $this->totalItems(Yii::$app->session['cart']),
            'totalPrice' => $this->totalPrice(Yii::$app->session['cart']),
        ]);
    }

}

я получил указанный выше код от t = PLX5MZfWdby5QFDLU-Ov7Ixv6AilU-mgcQ "

реализация новой модели и добавление ее в базу данных - моя реализация

product.php

<?php foreach ($product as $p) { ?>
                <div class = "col-md-4">

                    <h2><?php echo $p->name?></h2>
                    <?php echo "<br/>"?>
                    <?php echo "Name: ".$p->name?>
                    <?php echo "<br/>"?>


                     <?php echo "price: ".$p->price?>
                    <?php echo "<br/>"?>
                    <?= Html::a('AddToCart',['/cart/add','id'=> $p->proid], ['class' => 'btn btn-success']) ?>



                </div>
            <?php } ?>

Возможный дубликат Yii2 получить идентификатор продукта через запятую

Insane Skull 31.10.2018 06:27
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
132
1

Ответы 1

Вы должны изменить несколько функций, сначала нужно изменить функцию добавления в корзину.

добавление Yii::$app->session['cart']['id'][] = $id;

мне нужно добавить эту функцию в функцию addtocart ($ id)? то я получаю эту ошибку Косвенное изменение перегруженного элемента yii \ web \ Session не имеет никакого эффекта

Lochan SS 31.10.2018 07:07

$ session - это объект, а не массив. $ session ['the_variable'] является перегрузкой $ session-> get ('the_variable')

Bira 31.10.2018 08:38

не могли бы вы переписать приведенный выше код, так как я новичок в yii2 и php

Lochan SS 31.10.2018 10:08

Другие вопросы по теме