сохранить с помощью JavaScript и чтения сессий в контроллере Symfony4 - PullRequest
0 голосов
/ 18 декабря 2018

Я получил код, который сохраняет идентификатор продукта в sessionStorage,

$('button#addToCart').on('click', function() {
    function checkAndAdd(name, array) {
        var found = array.some(function(el) {
            return el.id === name;
        });
        if (!found) {
            array.push({
                id: name
            });
        }
    }
    var cart = [];
    var currentCart = sessionStorage.getItem('cart');
    var productID = $(this).attr('product');
    var product = {
        'id': productID,
    }
    if (currentCart) {
        cart.push(currentCart);
        var cart = JSON.parse(cart);
        checkAndAdd(productID, cart);
    } else {
        cart.push(product);
    }
    var quantity = cart.length;
    var cart = JSON.stringify(cart);
    sessionStorage.setItem('cart', cart);
        $('#items_in_cart').html(quantity, function() {
        $('#shopping_cart_icon').animateCss('pulse');
    });
})

А теперь, как я могу получить это значение "корзины" из сеанса в контроллере?Или как это должно работать в Symfony?Должен ли я использовать Ajax и менеджер сессий в Symfony?

++++ EDITED +++++

Ok i made something like that, this working. 


$('button#addToCart').on('click', function() {
    function checkAndAdd(name, array) {
        var found = array.some(function(el) {
            return el.id === name;
        });
        if (!found) {
            array.push({
                id: name
            });
        }
    }

    var productID = $(this).attr('product');

    $.ajax({
        url: '/ajax/getcart',
        success: function(result) {
            var cart = [];
            var currentCart = result;
            var product = {
                'id': productID,
            }
            if (currentCart.length > 0) {
                cart.push(currentCart);
                var cart = JSON.parse(cart);
                checkAndAdd(productID, cart);
                console.log(cart);
            } else {
                cart.push(product);
            }
            var quantity = cart.length;
            var cart = JSON.stringify(cart);

            $('#items_in_cart').html(quantity, function() {
                $('#shopping_cart_icon').animateCss('pulse');
            });
            $.ajax({
                url: '/ajax/addtocart',
                data: {
                    'cart': cart,
                },
                success: function(result) {
                    console.log(result);
                }
            });
        }
    });

})

И я могу передать и получить доступ к сессиям в контроллерах, это правильный способ сделать это?

Мой замысел заключается в том, что я хочу нажать кнопку, добавить в корзину и передать ее менеджеру сессий в Symfony.Тогда, если клиент зайдет в корзину, ядро ​​загрузит продукты из сеанса из контроллера с маршрутизацией / клиент / корзина, это правильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...