Jednoduchý e-shop Laravel 5.3 část 3 – košík a přidání zboží do něj
Pokračujeme tedy dál no homepage máme zobrazení košíku a teď bychom chtěli zboží přidat do košíku a po té zobrazit zboží v košíku. Obsah košíku uložíme do session . Takže do routes/web.php si přidáme dvě routy a to pro přidání zboží do košíku a také pro zobrazení košíku.
1 2 |
Route::post('/addcart', 'CartController@postAdd'); Route::get('/cart','CartController@index'); |
a vytvoříme si CartController
1 |
php artisan make:controller CartController |
a upravíme takto
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Product; class CartController extends Controller { public function index(Request $request) { $cartData = $request->session()->get('cart'); $cart = []; $sum = 0; if ($request->session()->has('cart')) { foreach ($cartData as $key => $value) { $product = Product::where('id', '=', $key)->get()->toArray(); $cart_item['item'] = $product['0']; $cart_item['total_price'] = $value['qty'] * $product['0']['price']; $cart_item['qty'] = $value['qty']; $sum = $sum + $cart_item['total_price']; array_push($cart, $cart_item); } } return view('cart')->with('cart',$cart)->with('sum',$sum); } public function postAdd(Request $request) { $id = $request->input('product_id'); $session = $request->session(); $cartData = ($session->get('cart')) ? $session->get('cart') : array(); if (array_key_exists($id, $cartData)) { $cartData[$id]['qty']++; } else { $cartData[$id] = array( 'qty' => 1 ); } $request->session()->put('cart', $cartData); return redirect()->back()->with('message', 'Prodcut Added Successfully!'); } } |
funkce postAdd nám slouží pro přidání zboží z homepage do košíku a a index nám zobrazí aktuální obsah košíku. Ještě musíme připravit…