Jmenný prostor presenteru v nmakru
- bluray
- Člen | 178
Ahoj, potřeboval bych trochu poradit. Zkouším tu ukázkovou aplikaci blogu
a mám jednu otázku.
Když mám odkaz třeba
<a href="Post:create">Vložit nový příspěvek</a>
Odkazuje na třídu App\Presenters\PostPresenter, je možné si ve složce
presenters vytvořit složku třeba Posts a v ní mít tu třídu v prostoru
App\Presenters\Posts\PostPresenter. jak potom bude vypadat ten odkaz?
Zkoušel jsem Posts\Post:create ale to nefungovalo.
Dále se chci zeptat jestli když budu chtít změnit ten hlavní jmenný
prostor App tak stačí pouze přejmenovat složku app a názvy jmenných
prostorů?
Děkuji za rady
- David Matějka
- Moderator | 6445
Neodkazujes na jmenny prostor/tridu, ale na modul a presenter. Nette pote dle nastaveneho mapovani prevede ten modul+presenter na tridu.
jak pracovat s modulama najdes na priklade treba tady: https://github.com/…odules-Usage
a posledni poznamka, jmenne prostory a tridy nemaji primou souvislost s nazvy slozek a souboru – je na autoloaderu aby nasel spravny soubor. v nette toto resi robot loader, ktery proskenuje celou slozku /app a najde v jakem souboru je ktera trida
- bluray
- Člen | 178
Děkuji za odpověd, mám s tím ale trochu problém, vznikne chyba pokud se pokusím o něco takového App*Module\Presenters**Presenter
chci mít ve složce Presenters další podsložky například třeba Articles, Images… a v nich teprve Presentery, zároven ale budou presentery i v složce Presenters
- David Matějka
- Moderator | 6445
obavam se, ze tohle nepujde. To mapovani je (zatim) omezeny, ze muzes
zastupny znak pro modul nebo presenter pouzit pouze 1×. Neni tedy mozne mit pro
presenter „Post“ tridu „App\Presenters\Post\PostPresenter“, leda ze bys
ten presenter „Post“ dal do modulu „Post“, pak by to vhodnym mapovanim
asi nejak slo, ale myslim, ze je to zbytecny.
Ma to nejaky prakticky duvod, ze bys chtel takovyhle namespace, nebo se ti jen
libi? :)
Osobne spise doporucuji pouzit vhodne moduly a vice presenteru – v tvem pripade tedy treba modul „Post“ a pod nim presentery „CreatePresenter“, „ListPresenter“…
- bluray
- Člen | 178
Důvod to má, když třeba budu mít více podobných presenterů, kteří budou pracovat se stejnou věcí. Například pro články, mám poměrně složité přidávání článků, na několik formulářů, editace tím pádem taky, potom výpisy když to dám do jednoho presenteru, bude mít tisíc řádků v tom se nevyznám, tak chci mít třeba AddArticlePresenter, EditArticlePresenter. když dám všechny stejný presentery do jedný složky bude to přehlednější
- Tomáš Votruba
- Moderator | 1114
@bluray: Pokud umístíš logiku přidávání/úpravy článku do komponent, budeš mít pak presenter dostatečně přehledný?
- David Matějka
- Moderator | 6445
@bluray: tak si to rozdel do modulu (treba Article) s jednotlivymi presentery (Edit, Add..). pak budes mit tridy (dle defaultniho mapovani v sandboxu):
App\ArticleModule\Presenters\EditPresenter
App\ArticleModule\Presenters\AddPresenter