php логика в системной корзине и управление сессионным значением - PullRequest
1 голос
/ 21 марта 2012

это вопрос о логике корзины электронной коммерции, встроенной в php:

У меня есть элемент в корзине, сохраненный с сеансом в php, этот сеанс назван составной строкой, где уникальный ключ задан product_id:

$this->session->data['quote_total_'.$product_id];

проблема в том, что когда я добавляю в корзину тот же товар, но с другой ценой - цена генерируется системой автоматически при изменении количества ошибок, опций и количества - действительно, первое значение сеанса корзины, то есть значение цены первого продукта, перезаписывается новым. Какой лучший способ избежать этой перезаписи для вас?

Я думал об уникальном значении, добавляемом к имени сеанса, но я не понимаю, какие из них ...

Ответы [ 4 ]

0 голосов
/ 21 марта 2012

Создание многомерного массива, например

$data = array([0]=>array(
    'product_id' => 123,
    'qty' => 1,
    'name' => 'Product Name',
    'price' => 10),
    [1]=>array(
    'product_id' => 123,
    'qty' => 2,
    'name' => 'Product Name',
    'price' => 20)
);
0 голосов
/ 21 марта 2012

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

// add a product - new product will always be added
$this->session->data[] = array(
    'product_id' => 123,
    'qty' => 1,
    'name' => 'Product Name',
    'price' => 10
);


// you can iterate over the products like
foreach($this->session->data as $product)
{
    print_r($product);
}
0 голосов
/ 21 марта 2012

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

0 голосов
/ 21 марта 2012

Как насчет сделать эту переменную массивом вместо примитивного типа данных?

...