Как удалить элемент из многомерного сеанса cakephp - PullRequest
0 голосов
/ 10 мая 2018

Я работаю на сайте электронной коммерции, где хранится весь продукт корзины в сеансе, который работает отлично. Вот отладка сеанса корзины.

debug($this->request->getsession()->read('cart'));

[
    (int) 1 => [
        (int) 0 => [
            'id' => (int) 1,
            'picture' => '1_1.webp',
            'sku' => 'TH447WA38OUMINDFAS',
            'name' => 'The Vanca Multicoloured Printed Strappy Top',
            'size' => 'S',
            'price' => '480'
        ]
    ],
    (int) 2 => [
        (int) 0 => [
            'id' => (int) 2,
            'picture' => '2_1.webp',
            'sku' => 'AL384WA86QOSINDFAS',
            'name' => 'All About You Pink Embroidered Blouse',
            'size' => 'S',
            'price' => '1330'
        ]
    ],
    (int) 3 => [
        (int) 0 => [
            'id' => (int) 3,
            'picture' => '3_1.webp',
            'sku' => 'RE367WA35NDKINDFAS',
            'name' => 'Renka Comfortable Black Color Seamless Summer Tops For Women',
            'size' => 'S',
            'price' => '495'
        ]
    ]
]

Теперь я хочу удалить любую строку из корзины, но это не работает для меня.

unset($this->request->getsession()->read('cart')[1]);

1 Ответ

0 голосов
/ 10 мая 2018

должно быть просто

$this->request->getSession()->delete('cart.1');

вы можете использовать точечную нотацию при доступе к массивам сеансов

Вы также можете прочитать и удалить данные в одной команде

$cart =  $this->request->getSession()->consume('cart');

см. Руководство здесь и API здесь и здесь

...