Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET
Využij akce až 80% zdarma při nákupu e-learningu. Více informací .
BF summer

Lekce 1 - E-shop v Nette - Založení projektu

Vítám všechny středně pokročilé a pokročilé programátory u pokračování seriálu o vývoji aplikací v Nette, kde navážeme na Jednoduchý redakční systém v Nette. Je určen pro všechny, kteří mají za sebou tento seriál a nyní chtějí vytvořit ostrý komerční web pro realizaci svého podnikatelského záměru nebo pro získání kvalifikace pro zaměstnání, kde Nette vyžadují (a že jich v Čechách je).

Seriál je psaný již pro nové Nette, tedy pro 3.x.

Pozor, dodržuj přesné verze komponent/fra­meworku! Pokročilé projekty jako tento jsou složené z komponent. Možná by tě napadlo použít nejnovější verzi nějaké komponenty, co zrovna včera vyšla. Projekt ti pak ale bez odborné úpravy pravděpodobně nebude fungovat! U verzí komponent neplatí jako např. u aktualizace Windows, že chceme každý den používat tu nejnovější. Neustálé aktualizace všeho by totiž vyžadovaly každodenní a komplexní změny kódu projektu a reálně se tak neprovádějí. Ze stejného důvodu i my aktualizujeme kurzy v pravidelných intervalech a nové verze k sobě pak sladíme tak, aby vše fungovalo.

Na základě projektu z předchozího zmíněného seriálu vytvoříme plně funkční e-shop a to včetně funkcí jako vyhledávání, účetnictví, generování faktur do PDF a administrace. Budeme dále rozšiřovat a prohlubovat znalosti Nette, stejně jako se učit dalším funkcím, které nám tento framework nabízí a v neposlední řadě zde využijeme i další technologie, abychom například udělali náš web responzivní. V dnešním díle tedy začneme s úpravami původního projektu pro potřeby budoucího E-shopu. Pro jednoduchost můžete archiv stáhnout níže pod článkem, kde je už zpracována tato lekce.

Na úvod si uveďme ještě několik motivačních screenshotů z hotového projektu (projekt je samozřejmě mnohem komplexnější, ale vše se sem nevejde):

Druhý krok registrace osoby.

Vygenerovaná PDF faktura.

Filtrování produktů.

Detail produktu.

Vytváření účetních nastavení.

Upozornění - Vývoj reálného firemního projektu v praxi

A je to tady! V tomto unikátním kurzu budeš pracovat na reálném firemním projektu a po jeho absolvování se staneš panem programátorem! Díky tomu je samozřejmě kurz i mnohem náročnější než vše, co jsi doposud potkal. Výukové kurzy jsou ve většině případů uměle udělané tak, abys pochopil nějakou úzkou problematiku a nemátly tě dalšími tématy a ze začátku to je tak i efektivní. V tomto kurzu už ale nevytvoříš appky alá "TODO" nebo "evidence knížek, co mám doma", ale plnohodnotný komerční software, za jehož tvorbu firmy reálně platí šestimístné částky svým zaměstnancům. Na projekt se také vztahuje licence Premium no-reselling, takže jej není možné zveřejňovat jako zdrojový kód nebo přeprodávat.

Co je jinak?

Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

Počítej s tím, že už ne úplně vše ti napoprvé půjde. Cílem kurzu je podívat se jak se programuje ve firmách a pochytit z toho co nejvíc. Cílem tedy výjimečně není pochopit vše a už vůbec ne to napsat, spustit a čekat, že vše bude napoprvé fungovat. Lekcí je opravdu spoustu, budeš dělat překlepy, budeš mít projekt v jiném stavu než je v kurzu, něco jinak pochopíš apod. Na zdolání kurzu je naštěstí jednoduchý postup:

  • Zkontroluj si minimální požadavky - Prvně se ujisti, že máš za sebou kurzy zmíněné v pasáži "Požadavky na znalosti". Jestli ti nějaký chybí, nemáš bez něj tento kurz šanci projít a prvně si jej absolvuj. Pokud minimální požadavky splňuješ, nemusíš se bát, že to nezvládneš! :)
  • Drž se řešení, která používá kurz - Nesnaž se odchylovat od kurzu použitím vlastního řešení, při komplexnosti kurzu by mohlo být nekompatibilní s další budoucí implementací a připravuješ se také o možnost používat řešení vzorová. Upravit projekt si můžeš po skončení kurzu.
  • Používej záchytné body - Až budeš mít s něčím problém (a to se při komplexnosti a délce kurzu stane a neznamená to, že jsi špatný ty ani kurz), každých několik lekcí je dole ke stažení funkční projekt jako záchytný bod. Ten si stáhni a najdi si chybu v tom svém nebo, pokud se ti to nepodaří, pokračuj s tímto staženým projektem.
  • Využívej pomoc komunity - Dále můžeš využít možnosti komentářů (přečíst si komentáře ostatních na dané lekci, zda již někdo podobný problém neřešil, nebo napsat vlastní). Ve firmě ti s vývojem také někdo ze začátku pomůže a budeš se ptát, nedáš všechno hned sám. Zde za kolegy suplují záchytné archivy a diskuze.

Máš jedinečnou šanci zkusit si, jak to reálně vypadá, a dovršit své junior znalosti na uplatnitelnou úroveň nebo prohloubit své znalosti až na medior úroveň. Jeden život, jedna šance, pojďme na to!

Požadavky na znalosti

Tento projekt je na pomezí junior/medior co se týká levelu znalostí. V rámci levelu znalostí Junior se předpokládá spíše orientace v tomto větším reálném Nette projektu, než že budete úplně všemu rozumět. Pokud byste chtěli detailně pochopit veškerý kód, pomohou vám znalosti v rozsahu Medior-level.

Junior-level znalosti

V rámci levelu znalostí Junior se předpokládají znalosti v tomto rozsahu:

Medior-level znalosti

Pokud byste chtěli detailně pochopit veškerý kód, pomohou vám ještě následující znalosti, nicméně počítejte s vyšší časovou náročností:

To by pro krátký úvod stačilo :)

V další lekci, E-shop v Nette - Databáze, si trochu pozměníme databázi a začneme i s úpravou presenteru a továrničky.


 

Všechny články v sekci
Kompletní e-shop v Nette
Článek pro vás napsal Jindřich Máca
Avatar
Jak se ti líbí článek?
7 hlasů
Autor se věnuje převážně webovým technologiím, ale má velkou zálibu ve všem vědeckém, nejen ze světa IT. :-)
Aktivity (39)

 

 

Komentáře
Zobrazit starší komentáře (8)

Avatar
Jindřich Máca
Redaktor
Avatar
Jindřich Máca:3.6.2017 21:52

Ne, určitě tam nemám nic "schované". :D

 
Odpovědět
3.6.2017 21:52
Avatar
rosatislav
Člen
Avatar
rosatislav:29.9.2017 18:17

Zdravím, chtěl bych se zeptat na tu metodu inject.

Zajímalo by mne, jak to vlastně funguje. Pokud v nějakém presenteru nepoužiju proměnnou $formfactory, tak se tato metoda ani nikdy nezavolá? Takže by to znamenalo, že v momentě kdy budu v nějaké metodě chtít použít $formFactory, tak Nette zjistí, jestli je tato proměnná nastavena a pokud ne tak zavolá metodu injectFormFac­tory()?

předpokládám, že aby Nette zjistilo, kterou metodu zavolat, tak je důležité aby její název obsahoval název té proměnné?

 
Odpovědět
29.9.2017 18:17
Avatar
Jindřich Máca
Redaktor
Avatar
Odpovídá na rosatislav
Jindřich Máca:30.9.2017 16:13

Zdravím, ne takhle to úplně nefunguje. V rámci klasické dědičnosti všechny presentery dědíc od BasePresenter budou obsahovat metodu injectFormFactory(). Tu pak Nette zavolá automaticky po vytvoření příslušného presenteru pro zavedení potřebných závislostí.

Dále název té proměnné s tím nemá nic společného, např. metoda by se mohla jmenovat injectDependencies() a předávat klidně hned několik závislostí naráz, obdobně jako konstruktor.

Více informací o získávání závislostí v Nette a tudíž i o metodách inject*() nejdeš v oficiální dokumentaci - https://doc.nette.org/di-usage

Editováno 30.9.2017 16:14
 
Odpovědět
30.9.2017 16:13
Avatar
Libor Sitek
Člen
Avatar
Libor Sitek:25.2.2018 10:47

Ahoj, jen bych chtěl poznamenat, že presentery v Nette mají aktuální HTTP Request k dispozici i bez nutnosti volání contextu:

$httpRequest = $this->getHttpRequest() // Získáme aktuální HTTP request.
Odpovědět
25.2.2018 10:47
Když se chce, hledá se jak, když se nechce, hledá se proč
Avatar
Vincent
Člen
Avatar
Vincent:11.10.2019 15:20

ahoj Jindřichu,

děkuji Ti i tvým kolegům za skvělé seriály :D

z minulého balíku jednoduchého cms jsem stáhl nette-rs.zip
a tam jsem nenašel žádný soubor sql/create_scrip­t.sql, chyběl adresář sql/

tedy dělám podle toho co jsi napsal výše #Nyní už jen zbývá vytvořit všechny tabulky. Pro tento účel můžete použít sql/create_scrip­t.sql, jak jsme to dělali v minuých lekcích. Tento script naleznete v archivu, spolu se zdrojovými soubory.#

prosím o nějaký link na ty sql... Děkuji.

 
Odpovědět
11.10.2019 15:20
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Vincent
Člen
Avatar
Vincent:11.10.2019 19:04

so beautiful .latte file!!!

kluci, lehce se zeptam co to znamena ten blok
{define bootstrap-form $formName}
...
{/define}
ten block bootstrap-form se pouziva pozdeji ale z Latte definice {define} nevidim misto pro $formName.

Dekuji.

 
Odpovědět
11.10.2019 19:04
Avatar
Jiří Jahn
Člen
Avatar
Jiří Jahn:18.9.2020 14:43

Ahoj, diky za clanky. Mam nekolik (asi dva) dotazu: Pro Nette 3.0 jsou nejspis treba nejake upravy. Za prve: metodu

isAllowed

je treba definovat. Nejlepe snad pomoci autorizatoru jako treba tady ktery je treba registrovat jako sluzbu v

common.neon

Druha vec, ktera mi neni moc jasna: je v tomto kontextu nejaky podstatny rozdil mezi metodami

public final function injectFormFactory(FormFactory $formFactory)
  {
    $this->formFactory = $formFactory;
  }

a

public function __construct(FormFactory $formFactory)
  {
    $this->formFactory = $formFactory;
  }

. Obě mi totiž fungují, takže tohle asi není dobrý příklad na vysvětlení rozdílu mezi nimi. A jeste posledni vec: v Nette 3.0 nejspis nefunguje presmerovani

$this->redirect(':Core:Administration:login');

Jak by vypadala nejblizsi pribuzna alternativa v tomto pripade? Diky

 
Odpovědět
18.9.2020 14:43
Avatar
Jiří Jahn
Člen
Avatar
Odpovídá na Jiří Jahn
Jiří Jahn:18.9.2020 15:12

Pardon, uz jsem pochopil, ze ten CoreModule je treba vytvorit, na posledni otazku tudiz neni treba odpovidat :-) Diky

Editováno 18.9.2020 15:12
 
Odpovědět
18.9.2020 15:12
Avatar
Honza Zach
Člen
Avatar
Honza Zach:20. ledna 12:55

Zdravím, je nějak v plánu aktualizace pro nette 3? Kdy by to tak mohlo být? Díky

 
Odpovědět
20. ledna 12:55
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Honza Zach
David Čápka:2. února 15:20

Určitě, aktuálně na ni pracujeme.

Odpovědět
2. února 15:20
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 18. Zobrazit vše