我创建了一个从前端删除数据对象的表单。问题是它不会删除。
这是我的代码。有人能指出我正确的方向吗?
public function deleteFromCart($ID) {
$fields = new FieldList(
new HiddenField('ID', 'ID', $ID)
);
$actions = new FieldList(
new FormAction('doDeleteFromCart', 'löschen')
);
return new Form($this, 'deleteFromCart', $fields, $actions);
}
public function doDeleteFromCart($data) {
$cart = CartItem::get()->byID($data['ID']);
$cart->delete();
return $this->redirectBack();
}
这是我的模板
<% loop getCart %>
<% if CartItems %>
<% loop CartItems %>
$Title - $Amount - $Price - $Sum - $Top.deleteFromCart($ID)
<% end_loop %>
<% else %>
Keine Artikel im Warenkorb
<% end_if %>
<% end_loop %>
另外$ this-&gt; redirectBack();不起作用。提交表格后,我在home/deleteFromCart
提前谢谢
答案 0 :(得分:2)
我建议使用一个调用操作的链接来移除购物车中的商品,而不是表单。它更简单,问题也更少。
<强>模板强>
<% loop $getCart %>
<% if $CartItems %>
<% loop $CartItems %>
$Title - $Amount - $Price - $Sum - <a href="{$Top.Link}remove/{$ID}">Remove from cart</a>
<% end_loop %>
<% else %>
Keine Artikel im Warenkorb
<% end_if %>
<% end_loop %>
<强>控制器强>
private $allowed_actions = array(
'remove'
);
public function remove() {
$cartItemID = $this->request->param('ID');
if ($cartItemID && $cart = CartItem::get()->byID($cartItemID)) {
$cart->delete();
}
return array();
}