Tags
nettephp
Cover
Date
February 5, 2018
Jednoduché i složité ukázky jak mapovat Nette presentery.
Kdykoli použijeme v Nette zápis User
nebo Front:User
či Front:User:Login
, Nette musí interně vytvořit instanci presenteru.
V ukázkách se pokusím vysvětlit jak mapování funguje. Detailnější pohled najdete v dokumentaci nebo v testech.
Defaultně máme k dispozici 2 mapování, univerzální a pro Nette modul.
application:
mapping:
*: ['', '*Module', '*Presenter']
Nette: ['NetteModule', '*', '*Presenter']
Syntax | Classpath |
User | UserPresenter |
User:Login | UserModule |
Front:User:Login | FrontModule |
Nette:User | NetteModule |
Nette:User:Login | NetteModule |
Pokusíme se dopracovat do stavu, kdy Front:User:Login
bude přeložen na App\Front\User\Login\LoginPresenter
.
Přidáme prefix App
.
application:
mapping:
*: ['App', '*Module', '*Presenter']
Nette: ['NetteModule', '*', '*Presenter']
Syntax | Classpath |
User | App |
User:Login | App |
Front:User:Login | App |
Nette:User | NetteModule |
Nette:User:Login | NetteModule |
Odstraníme opakující se slovo Module
. Moje oblíbená verze.
application:
mapping:
*: ['App', '*', '*Presenter']
Nette: ['NetteModule', '*', '*Presenter']
Syntax | Classpath |
User | App |
User:Login | App |
Front:User:Login | App |
Nette:User | NetteModule |
Nette:User:Login | NetteModule |
A nakonec zduplikujeme název presenteru do namespace.
application:
mapping:
*: ['App', '*', '*\*Presenter']
Nette: ['NetteModule', '*', '*Presenter']
Syntax | Classpath |
User | App |
User:Login | App |
Front:User:Login | App |
Nette:User | NetteModule |
Nette:User:Login | NetteModule |
Jak je vidno, upravit mapování k našemu obrazu není tak složité. Důležité je si uvědomit, které části se opakují. Více napoví obrázek.