У меня есть корзина, в которую я добавляю товары через AJAX (выборка). Когда я добавляю товар в корзину и проверяю запрос на панели инструментов отладки, сеанс настроен правильно. Но после перезагрузки страницы сессия пропадает. Это странно, потому что, когда я использую тот же код для добавления товара в корзину, но не через AJAX (с использованием ссылки и перенаправления), все работает нормально. Где могла быть проблема?
public function addItem(int $id, string $type, int $quantity = 1)
{
$item = new CartItem();
$item->setId($id);
$item->setQuantity($quantity);
$item->setType($type);
$this->items[] = $item;
$this->session->set(self::SHOPPING_CART_SESSION_NAME, $this->items);
}
/**
* @Route("/add-to-cart", name = "add_item_to_cart")
*/
public function addItemToCart(Request $request)
{
$data = json_decode($request->getContent());
$type = $data->type;
$id = intval($data->id);
$quantity = intval($data->quantity);
$this->shoppingCartService->addItemToShoppingCart($id, $type, $quantity);
return new JsonResponse('success', 200);
}
fetch('/add-to-cart', {
method: 'post',
body: JSON.stringify({
type: type,
id: productId,
quantity: quantity
})
}).then((response) => {
response.json().then(data => {
console.info(data);
});
}).catch((error) => {
});
@ Philippe-B: Да, но это не помогло.






Вы пробовали установить
cookie_httponlyнаfalseв своей конфигурации? Это делает файл cookie сеанса доступным для javascript, как описано здесь.