繁体   English   中英

Yii2购物车不保存到会话

[英]Yii2 shopping cart doesn't save to session

我将Yii2用于我的电子商务网站。
这里我使用omnilight / yii2-shopping-cart,但我不确定为什么它不能保存到会话产品的信息。

我使用了ajax请求将我的产品放到购物车位置。

function actionAddToCart() {

    $pid = $_REQUEST['pid'];
    $quantity = $_REQUEST['quantity'];

    $model = Product::findOne($pid);
    $model->quantity = $quantity;

    if ($model) {
        // @@@ Add Cookie Data here
        $cart = \Yii::$app->cart;

        $params = [];
        $params['price'] = $model->price;
        $params['quantity'] = $quantity;

        $cartPosition = $model->getCartPosition($params);

        $cart->put($cartPosition, $quantity);

        // var_dump($cart);
        // die();

        return $this->renderAjax('productView', [
            'product' => $model
        ]);
    }
}

当我在这里获得购物车的日志时,我可以看到该产品已添加到会话中。
但是在加载productView之后,我发现会话中没有产品。

任何帮助,将不胜感激。

这里我使用的是CartPositionInterface,它的id,价格,颜色,大小,长度,数量都是它的参数。 结果如下:

object(yz\shoppingcart\ShoppingCart)#109 (6) {
  ["storeInSession"]=>
  bool(true)
  ["session"]=>
  object(yii\web\Session)#58 (6) {
    ["flashParam"]=>
    string(7) "__flash"
    ["handler"]=>
    NULL
    ["_cookieParams":"yii\web\Session":private]=>
    array(1) {
      ["httponly"]=>
      bool(true)
    }
    ["_hasSessionId":"yii\web\Session":private]=>
    bool(true)
    ["_events":"yii\base\Component":private]=>
    array(0) {
    }
    ["_behaviors":"yii\base\Component":private]=>
    NULL
  }
  ["cartId"]=>
  string(23) "myshoppingCart"
  ["_positions":protected]=>
  array(1) {
    ["404c11b84c06bda0bf7464d5fdc85604"]=>
    object(common\models\ProductCartPosition)#111 (7) {
      ["_product":protected]=>
      NULL
      ["id"]=>
      int(1)
      ["price"]=>
      float(250)
      ["color"]=>
      string(1) "1"
      ["size"]=>
      string(1) "L"
      ["length"]=>
      string(2) "56"
      ["quantity"]=>
      string(1) "1"
    }
  }
  ["_events":"yii\base\Component":private]=>
  array(0) {
  }
  ["_behaviors":"yii\base\Component":private]=>
  array(0) {
  }
}

但是,当我从productView获取日志时,它返回以下结果:

object(yz\shoppingcart\ShoppingCart)#49 (6) {
  ["storeInSession"]=>
  bool(true)
  ["session"]=>
  object(yii\web\Session)#52 (6) {
    ["flashParam"]=>
    string(7) "__flash"
    ["handler"]=>
    NULL
    ["_cookieParams":"yii\web\Session":private]=>
    array(1) {
      ["httponly"]=>
      bool(true)
    }
    ["_hasSessionId":"yii\web\Session":private]=>
    NULL
    ["_events":"yii\base\Component":private]=>
    array(0) {
    }
    ["_behaviors":"yii\base\Component":private]=>
    NULL
  }
  ["cartId"]=>
  string(23) "aljazeera_shopping_cart"
  ["_positions":protected]=>
  array(0) {
  }
  ["_events":"yii\base\Component":private]=>
  array(0) {
  }
  ["_behaviors":"yii\base\Component":private]=>
  NULL
}

如果您有任何建议,请告诉我。

对于你应该使用的sessione

$session = new Session;
$session->open();
$value1 = $session['name1'];  // get session variable 'name1'
$value2 = $session['name2'];  // get session variable 'name2'
foreach ($session as $name => $value) // traverse all session variables
$session['name3'] = $value3;  // set session variable 'name3'

看到这个参考。 http://www.yiiframework.com/doc-2.0/yii-web-session.html

这在我的本地主机上发生,因为在我的xampp设置中,php会话已关闭。 我不确定,但在试图搞清楚后,它开始保存会话。

我认为在xampp目录的php.ini中将session_auto_start标志更改为1后,它开始工作了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM