当我显示保存在会话中的选定产品时,我有一个按钮,如果我不需要它,我想使用该按钮删除特定产品。我可以用javascript实现吗?如果不是,还有其他解决方案吗?

我听说您无法使用javascript设置会话变量,因此删除它们可能也是如此,但是我听说您可以使用ajax删除它们?无论如何,我会这样显示我的产品(目前,我只动态显示产品价格):

{% for item in items %}
    <tr>
        <td><img width="60" src="{{ asset('bundles/mpFrontend/assets/products/4.jpg') }}" alt=""/></td>

        <td>{{ item.model }}</td>
        <td>
            <div class="input-append"><input class="span1" style="max-width:34px" placeholder="1" id="appendedInputButtons" size="16" type="text">
                <button class="btn" type="button"><i class="icon-minus"></i></button>
                <button class="btn" type="button"><i class="icon-plus"></i></button>
                <button class="btn btn-danger" type="button" onclick="removeItem(item.id)"><i class="icon-remove icon-white"></i></button>
            </div>
        </td>
        <td>$120.00</td>
        <td>$25.00</td>
        <td>$15.00</td>
        <td>$110.00</td>
    </tr>
{% endfor %}


更新这是我已经做的:

控制器中的removeAction:

public function removeAction($itemId)
{
    $session = $this->getRequest()->getSession();
    $session->remove();
    return $this->render('MpShopBundle:Frontend:product_summary.html.twig');
}


控制器路由:

removeItem:
  pattern:  /remove
  defaults: { _controller: MpShopBundle:Homepage:remove }


剧本:

<script>

    $(".btn btn-danger").click(function(){
        var itemId = $(this).val();
        $.ajax({
            type: "POST",
            url: "{{ path('removeItem') }}",
            data: { itemId: itemId }
        });

</script>


按下按钮不会做任何事情,我不感到惊讶,因为这是我第一次真正使用JavaScript,我想我做错了什么?

最佳答案

是的,您可以使用ajax!


在控制器中创建操作,该操作将删除会话的给定产品。


样本代码:

ProductController extends Controller{
   ...

   public function removeItemAction($itemId){

         //find here your session where you save the item.

        //and remove it

        //return a response depending on what you want in the format that you want (json,xml,...)
        return new Response("...");
   }
}


2.创建您的javascript代码,以侦听操作并将请求ajax发送到先前的url。 (如果使用jQuery,请参见$ .ajax)


更新您的DOM(删除正确的元素或加载所需的任何html)。

09-10 11:21
查看更多