当我显示保存在会话中的所选产品时,我有一个按钮,如果我不需要,我想要删除特定产品。我可以用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我想我做错了什么?
答案 0 :(得分:2)
是的,你可以使用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)
答案 1 :(得分:0)
只使用Javascript,你不能。 您的PHP会话只能通过php访问。你唯一能做的就是在php中创建一个函数,从会话中删除你想要的任何东西,并使用像@MouradK这样的ajax调用从javascript中调用它