Na navigaci | Klávesové zkratky

Testování routingu v Nette Frameworku

Poslouchaj, Roubíček, vědí, že mě dneska inspirovali?

Pokud máte určité povědomí o MVC, tak víte, že každý požadavek je předán ke zpracování nějakému páru controller & action. V terminologii Nette se říká presenter & view. Nette jde v této filosofii o krůček dál a uvnitř aplikace (tj. v kódu nebo šablonách) se neodkazuje pomocí URL, ale přímo oním párem presenter & view. Tato zdánlivá drobnost má v praxi naprosto zásadní dopad: jakmile to jednou vyzkoušíte, nebudete chápat, že jste kdy mohli psát aplikace jinak.

Stejný princip odkazování zvolil i Microsoft pro svou MVC implementaci pod ASP.NET.

Součástí každé webové aplikace je pak předpis pravidel, jak libovolné URL převést na presenter & view a obráceně. Jde o jakousi obdobu pravidel mod_rewrite, o kterých dokumentace zcela bez okolků říká:

mod_rewrite is voodoo. Damned cool voodoo, but still voodoo.

Trefné! Routování je prostě magie. Ačkoliv mám s Nette Frameworkem poměrně bohaté zkušenosti, routování je oblast, ve které se toho mám ještě dost co učit. Užitečným pomocníkem mi ode dneška bude Routing Debugger.

Jeho nasazení je velice jednoduché. Stáhněte si Nette Framework, Routing Debugger (je ve složce Tools) a spusťte ukázkovou aplikaci examples/CD-collection. Nyní stačí do souboru bootstrap.php za definici routovacích pravidel přidat následující příkaz:

require 'RoutingDebugger.php';
RoutingDebugger::enable();

Nyní všechny požadavky bude zpracovávat routovací debugger. Ten zobrazí stránku, kde oznámí, na který presenter & pohled aktuální URL vede, jaké se mu předají parametry a také zobrazí tabulku s přehledem všech definovaných cest včetně příznaků, jestli pasují i na aktuální URL:

Všimněte si, že tabulka je vyvedena v krásných barvách, teplých i studených, protože Nette Framework je určen pro teplé i studené vývojáře. V tom je právě jeho síla.


phpFashion © 2004, 2024 David Grudl | o blogu

Ukázky zdrojových kódů smíte používat s uvedením autora a URL tohoto webu bez dalších omezení.