Silex:向会话助手添加新值

时间:2013-10-15 09:17:44

标签: javascript php ajax session silex

我正在制作一张非常粗糙的购物卡,我使用Silex创建了MVC。我有一个JS / AJAX问题。我正在尝试将产品提交到购物篮中。麻烦的是,它提交了详细信息,在会话中设置它们并且工作正常。添加第二个产品时,它会替换产品,而不是将其附加到数组中。我尝试过几件不同的事情但没有成功。 (以下代码)。

干杯,

伊万

采用ajax值的路由器:

$app->get('/add/to/cart/{id}/{name}/{price}', function( $id, $name, $price ) use ( $app ) {

$basket[] = array (
    'id'    => $id,
    'name'  => $name,
    'price' => $price
);

$app['session']->set( 'basket', $basket ); 

return new Response( "Added to basket." );

});

这是javascript

$('.add-to-cart').on("click", function() {

$productId  = $(this).attr('product-id');
$productName = $(this).attr('product-name');
$productCost = $(this).attr('product-cost');

$.ajax({  
        type: "GET",  
        url: "http://localhost/php/Test/web/index.php/add/to/cart/"+$productId+"/"+$productName+"/"+$productCost,  
        data: {
            // Doesn't need the data, Silex takes it from the url
        },
        success: function() {  
            // Just to check it worked
            console.log( "add/to/cart/"+$productId+"/"+$productName+"/"+$productCost );
        },  
        error: function() { 

        }  
    }); 
});

1 个答案:

答案 0 :(得分:1)

你需要先获得当前的篮子。将其添加到函数的开头:

$basket = $app["session"]->get("basket", array());

第二个参数是默认值,当会话中不存在此类键时返回。这样,在这种情况下,您将得到一个空数组。