Jmenný prostor presenteru v nmakru

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
bluray
Člen | 178
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

@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
+
0
-

@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