Ukázky mapování Nette presenterů

05.02.2018
2 min read
282 words

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']
SyntaxClasspath
UserUserPresenter
User:LoginUserModule\LoginPresenter
Front:User:LoginFrontModule\UserModule\LoginPresenter
Nette:UserNetteModule\UserPresenter
Nette:User:LoginNetteModule\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']
SyntaxClasspath
UserApp\UserPresenter
User:LoginApp\UserModule\LoginPresenter
Front:User:LoginApp\FrontModule\UserModule\LoginPresenter
Nette:UserNetteModule\UserPresenter
Nette:User:LoginNetteModule\User\LoginPresenter

Odstraníme opakující se slovo Module. Moje oblíbená verze.

application:
    mapping:
        *: ['App', '*', '*Presenter']
        Nette: ['NetteModule', '*', '*Presenter']
SyntaxClasspath
UserApp\UserPresenter
User:LoginApp\User\LoginPresenter
Front:User:LoginApp\Front\User\LoginPresenter
Nette:UserNetteModule\UserPresenter
Nette:User:LoginNetteModule\User\LoginPresenter

A nakonec zduplikujeme název presenteru do namespace.

application:
    mapping:
        *: ['App', '*', '*\*Presenter']
        Nette: ['NetteModule', '*', '*Presenter']
SyntaxClasspath
UserApp\User\UserPresenter
User:LoginApp\User\Login\LoginPresenter
Front:User:LoginApp\Front\User\Login\LoginPresenter
Nette:UserNetteModule\UserPresenter
Nette:User:LoginNetteModule\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.

Nette Presenter Mapping
Nette Presenter Mapping

Currently working

I am currently digging deeper to serverless stuf. Also trying to do my best around Nette [contributte.org & componette.org]. Taking care of 242 libraries across various Github organizations.