我是JQuery / JavaScript / Ajax以及Symfony2&的新手。 PHP。
我正在构建一个简单的购物车,我希望用户能够使用JQuery Spinner(https://jqueryui.com/spinner/)控制他们在购物车中添加的产品数量。
作为新人,我真的可以使用一些帮助来解决这个问题。
我的所有尝试都失败了,我只是在苦苦挣扎。
HTML /枝条:
<tbody>
{% for key, product in quantity %}
<tr>
{{ dump(key) }}
<td>{{ product.product }}</td> <!--Product-->
<td>
<input class="spinner" value="{{ product.quantity }}" style="width:30px">
</td> <!--Quantity-->
<td>${{ product.product.price|default('') }}</td> <!--Price-->
<td>
<a href="{{ path('product_remove', {'id': key }) }}">
<button name="REMOVE" type="button" class="btn btn-danger" id="removeButton">
<span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
</button>
</a>
</td><!--Remove-->
</tr>
{% endfor %}
</tbody>
</table> <!--top table-->
<script type="text/javascript">
$(".spinner").spinner();
</script>
产品控制器(我设置数量......):
$quantity = new Quantity();
if (is_null($cart) || $cart->getSubmitted(true)) {
$cart = new UserCart();
}
$cart->setTimestamp(new \DateTime()); // Set Time Product was Added
$quantity->setQuantity(1); // Set Quantity Purchased
$cart->setSubmitted(false); // Set Submitted
$cart->setUser($this->getUser()); // Sets the User ONCE
$cart->addQuantity($quantity); // Add Quantity ONCE
$quantity->setUserCart($cart); // Create a UserCart ONCE
$quantity->setProduct($product); // Sets the Product to Quantity Association ONCE
$em->persist($product);
$em->persist($cart);
$em->persist($quantity);
$em->flush();
$this->addFlash('notice', 'The product: '.$product->getName().' has been added to the cart!');
答案 0 :(得分:0)
使用jQuery处理微调器上的change
事件。更新后,启动对数据库的请求以更新它。
将以下url
替换为您的网址。
$('input.spinner').on('change', function(){
var $this = $(this);
$.ajax({
url: '/path/to/update/my/product/quantity',
method: 'POST',
data : {
quantity: $this.val()
}
}).done(function(resp){
console.log('success', resp);
}).error(function(err){
console.log('error', resp);
});
});
手动处理$_POST['quantity']
中的产品数量并相应地更新cart
。
在Symphony控制器内部处理此问题的逻辑超出了范围,因为它太宽泛而且没有足够的信息来提供明确的指示。