我在编写一个将产品 ID 及其关联的超级属性应用于数组会话的小方法时遇到了一些困难。
我想要做的是,如果数组中已经存在某个属性集(例如背心),那么它不会添加到数组中,而是使用更新的 id 和超级属性覆盖位置。我目前正在重写 magento 如何添加到购物车以启用捆绑中可选的可配置产品的使用。
目前,该脚本采用 ajax 参数,然后将其应用于(在拆分出一些冗余和不需要的数据之后)要保留的会话,直到调用 add to cart 方法。
我当前的代码库包括以下内容:
<?php
// Handler for holding onto package products.
umask(0);
require_once 'app/Mage.php';
Mage::app();
Mage::getSingleton('core/session', array ('name' => 'frontend'));
$product = $_POST['productAdd'];
$split = explode(",",$product);
$actual = $split[0] . ',' . $split[1] . ',' . $split[2];
$_product = Mage::getModel('catalog/product')->load($split[0]);
$attributeSet = Mage::getModel('eav/entity_attribute_set')->load($_product->getAttributeSetId())->getAttributeSetName();
if(!empty($_SESSION['products'])) {
$arrayLength = count($_SESSION['products']);
for($i = 0; $i <= $arrayLength; $i++) {
if(strstr($_SESSION['products'][$i], $attributeSet)) {
$_SESSION['products'][$i] = $actual;
break;
}else{
$_SESSION['products'][] = $actual;
}
}
}else{
$_SESSION['products'][] = $product;
}
var_dump($_SESSION['products']);
?>
这适用于数组中的第一次出现并正确覆盖索引位置,但是,它不会覆盖数组的任何后续添加,而只是附加到数组的末尾,这不是我想要的! ]
样本输出:
array(4) {
[0]=> string(19) "15302, 959, Jackets"
[1]=> string(21) "15321, 1033, Trousers"
[2]=> string(21) "15321, 1033, Trousers"
[3]=> string(21) "15321, 1033, Trousers"
}
如果有人可以在正确的方向上推动我,将不胜感激!
谢谢!