如何使用Jquery数字微调器更新数据库中的数量?

时间:2016-04-06 17:09:21

标签: php jquery symfony

我是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!');

1 个答案:

答案 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控制器内部处理此问题的逻辑超出了范围,因为它太宽泛而且没有足够的信息来提供明确的指示。