Začínáme

Seznamte se v rychlosti s Nette Frameworkem při tvorbě jednoduchého úkolovníku. Ukážeme si, jak vytvořit bezpečnou aplikaci včetně přihlašování s využitím databáze, šablon, formulářů, routování i AJAXu.

Co všechno bude náš úkolovník umět?

  • sdružovat úkoly do samostatných seznamů
  • přidávat nové úkoly i nové seznamy
  • označit úkol jako dokončený (pomocí AJAXu)
  • přihlásit uživatele a odeslat zapomenuté heslo

Stažení

Nejprve si prosím ověřte, že máte spuštěný webový server s PHP ve verzi 5.3.0 nebo jakoukoliv vyšší.

Stáhneme si Nette Framework a tzv. sandbox, což je předpřipravená kostra aplikace. Pokud používáte nástroj Composer, stačí spustit v kořenovém adresáři webového serveru tento příkaz a sandbox i s frameworkem se vám stahnou do adresáře sandbox:

php composer.phar create-project nette/sandbox [cílová.složka] dev-release-2.0.x

nebo pokud máte Composer nainstalovaný, bude stačit i kratší zápis

composer create-project nette/sandbox [cílová.složka]

Nebo si stáhněte Nette Framework ručně a archív rozbalte. Obsahuje řadu složek, které jsou popsány jinde, nás teď bude zajímat pouze zmíněný sandbox. Ten zkopírujte do kořenového adresáře webového serveru.

Otevřete v prohlížeči adresu:

http://localhost/sandbox/www/

a Nette Framework vás s gratulací přivítá:

Image

Pohled do sandboxu

Pojďme sandbox nejprve trošku prozkoumat:

www/                      ← kořenový adresář webového serveru
└── sandbox/
    ├── app/              ← místo pro naši aplikaci
    │   ├── config/       ← konfigurační soubory
    │   ├── model/        ← třídy modelové vrstvy
    │   ├── presenters/   ← třídy presenterů
    │   ├── router/       ← továrna na routy
    │   ├── templates/    ← šablony
    │   └── bootstrap.php ← zaváděcí soubor
    │
    ├── libs/             ← knihovny, které bude naše aplikace využívat
    │   └── Nette/        ← jako třeba váš oblíbený framework :-)
    │
    ├── log/              ← zde se v produkčním módu logují chybová hlášení
    ├── temp/             ← místo pro dočasné soubory cache nebo session
    ├── test/             ← unit testy naší aplikace
    └── www/              ← složka veřejně přístupná z webu

Složka www je určena pro obrázky, JavaScripty, CSS a další veřejně dostupné zdroje. Je jako jediná přístupná z prohlížeče, proto si sem můžete namířit kořenový adresář webového serveru.

Pokud používáte Linux nebo Mac OS X, bude potřeba nastavit oprávnění pro zápis do složek temp a log. Nejsnázeji příkazem chmod -R a+rwX temp log.

Nás bude především zajímat složka app, ve které budeme programovat. V ní se nachází soubor bootstrap.php, vstupní bod aplikace. Stará se o načtení frameworku a konfigurace, aktivuje automatické načítání tříd a spustí aplikaci.

Z hlediska konfigurace aplikace je ještě důležitý soubor RouterFactory.php ve složce app/router/, který se stará o nastavení routování. Routování říká, jakou přesně mají mít URL adresy podobu. Výhoda Nette Frameworku je, že tvar URL můžete změnit kdykoliv a velice snadno, proto se routování budeme věnovat až ve chvíli, kdy budeme mít celou aplikaci naprogramovanou.

Laděnka

Nesmírně důležitým nástrojem při vývoji je Debugger, někdy přezdívaný Laděnka. Schválně si zkuste otevřít soubor app/presenters/HomepagePresenter.php a udělat v něm nějakou chybu, třeba smazat písmenko ze slova class. Pokud spouštíte aplikaci lokálně, objeví se vám srozumitelná červená stránka a hned jste v obraze. (Pokud spouštíte aplikaci na vzdáleném serveru, čtěte dál.)

Image

Laděnka vám neuvěřitelným způsobem usnadní práci při hledání chyb. Také si všimněte plovoucího Debugger baru v pravé spodní části, který vás informuje o důležitých běhových údajích.

Nette může běžet v buď v produkčním, nebo v debug módu. V produkčním prostředí Laděnka pochopitelně žádné citlivé údaje neprozrazuje a namísto toho je loguje. Debug mode se zapne, pokud k aplikaci přistupujete lokálně; naopak na serveru je mód produkční.

Debug mód lze natvrdo zapnout či vypnout (např. pro zapnutí debug módu lokálně, či naopak) v souboru bootstrap.php:

$configurator->setDebugMode(false);   // <- tento řádek je klíčový, vypne debug i lokálně
//$configurator->setDebugMode(['93.184.216.119', '2606:2800:220:6d:26bf:1447:1097:aa7']); // <- tento řádek zapne debug pouze pro dané IP adresy
$configurator->enableTracy(__DIR__ . '/../log');

V produkčním módu je potom červená obrazovka nahrazená uživatelsky srozumitelnou zprávou (můžete to sami zkusit úpravou bootstrap.php a znovunačtením):

Image

Podívejte se do adresáře log, kde jednak najdete v souboru error.log stručnou zprávu o chybě, ale také celou červenou stránku uloženou v souboru, jehož název začíná slovem exception.

Řádek $configurator->setDebugMode(false); opět zakomentujte a Laděnka bude debug-mód zapínat lokálně automaticky. Všude jinde bude vypnutý.

Nyní, vyzbrojeni základními znalostmi, se můžeme pustit do návrhu databáze a modelu.