删除前端数据对象的表单无法正常工作

时间:2014-03-14 10:19:01

标签: silverstripe

我创建了一个从前端删除数据对象的表单。问题是它不会删除。

这是我的代码。有人能指出我正确的方向吗?

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

结束

提前谢谢

1 个答案:

答案 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();
}