也许这很简单,但我无法理解它。
我希望能够从产品中删除选项,如果产品没有其他选项,请从购物车中删除该产品。
我查看了会话价值,但我没有看到那里的可能性:
2014-03-14 15:18:30 - Session Object
(
[data] => Array
(
[language] => nl
[currency] => EUR
[cart] => Array
(
[63:YToxOntpOjI7YTozOntpOjA7czoxOiIyIjtpOjE7czoyOiI0MSI7aToyO3M6MjoiODAiO319:YTozOntpOjI7YToxOntpOjA7czoxOiIxIjt9aTo0MTthOjE6e2k6MDtzOjE6IjIiO31pOjgwO2E6MTp7aTowO3M6MToiMSI7fX0=] => 1
)
[captcha] => dc9c56
[customer_id] => 1
)
)
我也没有看到数据库中可以轻松操作的数据。
我查看了library/cart.php
文件,但似乎不可能......
(代码那里:)
public function remove($key) {
if (isset($this->session->data['cart'][$key])) {
unset($this->session->data['cart'][$key]);
}
$this->data = array();
}
所有人都知道如何做到这一点(好或脏,不在乎)?也许接收每个产品并删除一个并插入?
答案 0 :(得分:2)
[63:YToxOntpOjI7YTozOntpOjA7czoxOiIyIjtpOjE7czoyOiI0MSI7aToyO3M6MjoiODAiO319:YTozOntpOjI7YToxOntpOjA7czoxOiIxIjt9aTo0MTthOjE6e2k6MDtzOjE6IjIiO31pOjgwO2E6MTp7aTowO3M6MToiMSI7fX0=] => 1
是product_id(63),后跟一个序列化的base64_encoded字符串,表示产品选项。
您可以对此进行解码并将其反序列化为数组,然后删除相关选项,检查是否有任何剩余等等...
Cart的getProducts()方法反序列化并解码它。这是相关代码:
foreach ($_SESSION['cart'] as $key => $quantity) {
$is_on_special = 0;
$product = explode(':', $key);
$product_id = $product[0];
$stock = true;
// Options
if (isset($product[1])) {
$options = unserialize(base64_decode($product[1]));
} else {
$options = array();
}