当我显示保存在会话中的选定产品时,我有一个按钮,如果我不需要它,我想使用该按钮删除特定产品。我可以用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)。