Logo
  • NOTES
  • BLOG
  • OSS
  • TALKS
  • WIKI
  • ABOUT
GITHUB

Ukázky mapování Nette presenterů

Tags
nettephp
Cover
Date
2018/02/05

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.

image
Logo

© f3l1x

GitHubLinkedInXYouTube