使用Crinsane / LaravelShoppingcart更新项目与Laravel 4

时间:2014-04-26 19:57:01

标签: laravel-4 shopping-cart

我正在使用https://github.com/Crinsane/LaravelShoppingcart并且一切正常,但我的电子商务网站正在动态地从数据库中提取数据。所以我的问题是如何编辑下面的代码,说明是否有其他项目添加到购物车然后添加。

public function add_to_cart()
{
    $page = Pages::all();
    $input = Input::all();

    $price = preg_replace('/[^0-9]+/', '', $input['options']);

    if (!empty($input)) {
        $cartContents = Cart::add(array('id' => randomNumber(), 'name' => $input['product_name'], 'qty' => 1, 'price' => $price));
        $carts = Cart::content();

        $cart_session = Cart::count();
        Session::put('cart_sess', $cart_session);
    }
    return View::make('basket.cart', compact('page', 'cartContents', 'carts'));
}

由于上面的方法显示它添加了一个,但我似乎无法弄清楚如何添加多个项目以及添加交付,然后将它们全部添加到客户将支付的实际总数中。

其他人玩弄这个包装并设法使其正常工作?

非常感谢。

1 个答案:

答案 0 :(得分:0)

这可能不是最好的答案,但它会完成这项工作。我对你的问题也有不同的解决方法 在您的视图中,请确保您有一个覆盖表格的表单以及全部更新按钮。 "继续结帐"可能只是一个按钮,因为您的购物车只是一个会话。

// View (notice how the name of the qty has the rowid):
{!! Form::open(array('route' => 'cart-update', 'id' => 'cart-form')) !!}
...
<td>
    <div class="cart_quantity_button">
       <input class="cart_quantity_input" type="number" name="quantity_{{ $row->rowid }}" min="1" max="10000" step="1" value="{{$row->qty}}" autocomplete="off" size="2">
    </div>
</td>
...
<button type="submit" class="btn-black pull-right" id="update_shopping">Update Shopping Cart</button>
{!! Form::close() }}

// Routes
Route::post('cart/update/', array('as' => 'cart-update', 'uses' => 'CartController@updateAll'));

// Controller
use Cart;
public function updateAll(Request $request)
{
    foreach($request->all() as $k => $v)
    {
        if ($k == "_token") continue;
        $arr = explode("_", $k);
        // Update the cart -> Cart::update($rowid, $qty);
        Cart::update($arr[1], $v);
    }

    $cart = Cart::content();
    return View::make('shoppingcart', compact('cart'));

}

有更好的方法可以做到这一点,但这应该满足您的需求。好吧,我希望