Hledám brigádu
Kdyby někdo potřeboval výpomoc formou brigády, nejraději ve fw Laravel. Tak se mi ozvěte.
co bych se chtěla naučit o PHP frameworku Laravel
Kdyby někdo potřeboval výpomoc formou brigády, nejraději ve fw Laravel. Tak se mi ozvěte.
Dneska jen takové miniaturní vylepšení po přidání zboží do košíku si zobrazíme modla okno. Upravovat budeme pouze view home.blade.php a to konkrétně že si upravíme kod pro přidání zboží do košíku, kde si předáme název a cenu zboží.
Tak jsem se rozhodla , že e-shop si vylepším o přidání do košíku ajaxem. Aby bylo možné použít ajax POST s Laravelem je nejpreve nutné ,aby byl předán s ajaxovým požadavek i csrf_token. Více najdeme jako vždy v dokumentaci X-CSRF_TOKEN Nejprve si upravíme master.blade.php do hlavičky přidáme
1 |
<meta name="csrf-token" content="{{ csrf_token() }}"> |
a také si zajistíme možnost přidat na konkrétní stránce javascritový kód. Takže na konec si přidáme
1 2 3 |
<script> @yield('scripts') </script> |
Nyní upravíme home.blade.php. Pro přidání zboží do košíku budeme používat
1 |
<a href="#" id="add" class="btn btn-primary" data-id="{{ $product->id }}">Koupit</a> |
a na konec souboru…
Takže dnes bych chtěla tento jednoduchý e-shop dokončit a to administrací produktů.
Nyní by bylo vhdoné, abychom si v administraci zobrazili podrobnosti ke každé objednávce. Šablona v administraci má u čísla objednávky odkaz na detail dané objednávky, takže nezbývá než to doprogramovat.
Dnešní část kodu mi dala asi nejvíce zabrat, protože se zde používají tzv. relationships. Takže po přihlášení do administrace budu chtít asi zobrazit přehled všech objednávek s informací o objednateli, stavu a cene objednávky.
Takže teď začneme tvořit administraci pro náš jednoduchý e-shop. Využijeme vestavěnou adminstraci v Laravelu 5.3. Před započetím je potřeba si zazálohovat stávající e-shop. protože dojde k přepsání některých souborů a my si pak jejich obsah obnovíme ze zálohy.
Dnes si jenom trochu rozšíříme funkcionalitu pro odeslání objednávky. Bylo by dobré, kdyby provozovatel e-shopu byl o provedené objednávce informován i mailem. Takže uložení objednávky rozšíříme o odeslání mailu. Využijeme k tomu zcela novou funkcionalitu, kterou má Laravel od verze 5.3 a to tzv. mailables viz dokumentace.
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…