Symfony2是否可以使用Javascript删除会话变量?

时间:2015-04-23 08:45:03

标签: javascript php symfony session

当我显示保存在会话中的所选产品时,我有一个按钮,如果我不需要,我想要删除特定产品。我可以用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我想我做错了什么?

2 个答案:

答案 0 :(得分:2)

是的,你可以使用ajax!

  1. 在控制器中创建您的操作,删除会话的给定产品。
  2. 示例代码:

    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)

    1. 更新您的DOM(删除正确的元素或加载您想要的任何HTML)。

答案 1 :(得分:0)

只使用Javascript,你不能。 您的PHP会话只能通过php访问。你唯一能做的就是在php中创建一个函数,从会话中删除你想要的任何东西,并使用像@MouradK这样的ajax调用从javascript中调用它