Jednoduchý e-shop Laravel 5.3 část 4 – dokončení objednávky
V dnešní části dokončíme objednávku zboží, které jsme si vložili do košíku. Zobrazíme si obsah košíku a nyní je potřeba přidat kód pro tlačítko objednat.
V dnešní části dokončíme objednávku zboží, které jsme si vložili do košíku. Zobrazíme si obsah košíku a nyní je potřeba přidat kód pro tlačítko objednat.
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…
Dazabázi máme vytvořenou. Abychom mohli vyvíjet aplikaci naplním si produkty daty. K tomu využiji další pěknou feature, kterou Laravel má a to database seeder. Takže si v database/seeds upravíme DatabaseSeeder.php a to takto
1 2 3 4 |
public function run() { $this->call(ProductsTableSeeder::class); } |
Dále si ve stejném adresáři vytvoříme ProductsTableSeeder.php
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 |
<?php use Illuminate\Database\Seeder; use Illuminate\Database\Eloquent\Model; use App\Product; class ProductsTableSeeder extends Seeder { public function run() { DB::table('products')->delete(); Product::create(array( 'name'=>'Náhrdelník swarowski', 'description'=>'Nový luxusní náhrdelník swarovski', 'slug'=>'nahrdelnik-swarowski', 'price'=>'1001.40', )); Product::create(array( 'name'=>'Prstýnek chirurgická ocel', 'description'=>'Potěší každou slečnu nebo paní.', 'slug'=>'prstynek-chirurgicka-ocel', 'price'=>'100.50', )); Product::create(array( 'name'=>'Náramek pro meditaci', 'description'=>'Meditační náramek přímo z Indie', 'slug'=>'meditacni-naramek', 'price'=>'250', )); } } |
a nyní bychom už mohli pustit seeder
1 |
php artisan db:seed |
Ovšem ten nám skončí chybou ClassProductcTableSeeder does not exists. Ovšem my ale víme, že existuje. Problém je pouze v autoloadu takže provedeme
1 |
composer dump-autoload |
A zkusíme seeder znovu spustit. Ops opět…
Po krátké přestávce ( v mezidobí jsem pronikala do tajů záludného prgramovacího jazyka C) jsem se vrátila k mému původnímu e-shopu ( viz. seriál a drobný update). Jak už to tak bývá, zjistila jsem, že ne zrovna všechno v něm bylo ideální. Protože se blíží vánoce a kromě zaměstnání, úklidu domácnosti, pečení cukroví a nákupu dárků, nemám v podstatě nic na práci, rozhodla jsem se svůj nehezký kód přepracovat a to s využitím nejnovější verze Laravel framewroku a to konkrétně aktuální verze 5.3….
UPDATE: Začala jsem novy seriál Jednoduchý e-shop Laravel 5.3 Po čase jsem se vrátila ke svému jednoduchému e-shopu na frameworku Laravel. Pro jednu známou jsem potřebovala jednoduchý e-shop na prodej jejich výrobků a tak jsem oprášila svůj zdrojový kód ze seriálu a updatovala jsem na Laravel 5.3. Oproti původnímu seriálu jsem vypustila kategorie (v požadovaném e-shopu je nepotřebuji, prodává jen pár svých kousků). Zato jsem přidala administraci s využitím vestavěné autentizace ve frameworku. Vytvořila jsem si vlastní middleware pro přihlášení do…
Tak si pohrávám s myšlenkou jak vylepšit jednoduchý e-shop a v rámci zkoušení jsem si vyzkoušela způsob jakým použít interface nebo jak tomu říkají Contract v Laravelu.
Pokračuji si s hraním spoužitím Gulpu , začala jsem v minulém příspěvku. Dnes si naistaluji browserSync automatické obnovení okna prohlížeče při změně souborů, gulp-notify informační zprávy v OS a gulp- autoprefixer. Nejprve si balíčky naistalujeme.
V současné době je moderní použití CSS preprocesorů. Vyzkouším si základní použití na jednoduchém webu. Předpokladem je instalace Node.js. Ověříme si instalaci vypsáním verze.
UPDATE: Začala jsem novy seriál Jednoduchý e-shop Laravel 5.3 Tak zatím se nikdo neozval, že by se mu šikla ta administrace, tak si zatím opravím drobnou chybu a to že pokud se do obchodu podívám a nemám ještě nic v košíku zobrazí se chyba
UPDATE: Začala jsem novy seriál Jednoduchý e-shop Laravel 5.3 Po delší pauze dnes dokončím náš minieshop. Zbývá nám jenom uložení objednávky. Vytvoříme si nejprve controller pro obsluhu objednávek