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\LoginPresenter | 
| Front:User:Login | FrontModule\UserModule\LoginPresenter | 
| Nette:User | NetteModule\UserPresenter | 
| Nette:User:Login | NetteModule\User\LoginPresenter | 
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\UserPresenter | 
| User:Login | App\UserModule\LoginPresenter | 
| Front:User:Login | App\FrontModule\UserModule\LoginPresenter | 
| Nette:User | NetteModule\UserPresenter | 
| Nette:User:Login | NetteModule\User\LoginPresenter | 
Odstraníme opakující se slovo Module. Moje oblíbená verze.
application:
    mapping:
        *: ['App', '*', '*Presenter']
        Nette: ['NetteModule', '*', '*Presenter']
| Syntax | Classpath | 
|---|---|
| User | App\UserPresenter | 
| User:Login | App\User\LoginPresenter | 
| Front:User:Login | App\Front\User\LoginPresenter | 
| Nette:User | NetteModule\UserPresenter | 
| Nette:User:Login | NetteModule\User\LoginPresenter | 
A nakonec zduplikujeme název presenteru do namespace.
application:
    mapping:
        *: ['App', '*', '*\*Presenter']
        Nette: ['NetteModule', '*', '*Presenter']
| Syntax | Classpath | 
|---|---|
| User | App\User\UserPresenter | 
| User:Login | App\User\Login\LoginPresenter | 
| Front:User:Login | App\Front\User\Login\LoginPresenter | 
| Nette:User | NetteModule\UserPresenter | 
| Nette:User:Login | NetteModule\User\LoginPresenter | 
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.
