Class used in service not found

Marty_McFly
Člen | 4
+
0
-

Ahoj,

před 3 roky jsem dělal jako maturitní projekt web v PHP. Bylo technikou spaghetti code, vymyslel jsem si super logiku načítání a přesměrování částečně pomocí .htaccess a ošetřil všechny chyby a fungovalo to, ale nedávno jsem to znovu otevřel a chvilku jsem se v tom musel zorientovávat, tak mě napadlo, když jsem slyšel super ohlas na Nette, že bych to mohl zkusit znovu, tentokrát objektově a mnohem čistěji, protože 30 souborů a většina s 200 řádky špaget není moc pěkný pohled… :D

OOP i MVC už mám v malíku, tak jsem si poslední 2 dny procházel veškerou Nette dokumentaci a fakt je to úžasná věc. Škoda, že jsem s tím nezačal dříve. :)

Potřeboval bych malou pomoc. Vytvořil jsem si nový projekt v NetBeans a přidal jsem pár tříd

DatabaseManager
SongManager
SongPresenter

přidal jsem je do config.neon, ale při načtení stránky se mi zobrazila chyba

Nette\DI\ServiceCreationException
Class App\Model\SongManager used in service ‚28_App_Model_SongManager‘ not found.

Už jsem si prošel pár podobných témat tady na fóru, ale stále nevidím, kde může být co špatně. Robot zřejmě nevidí tyto soubory, ale přitom by měl. Ještě před touto chybou jsem řešil tabulátory v config.neon, protože v Netbeans se místo jednoho skutečného tabulátoru udělaly 4 mezery a proto se mi zobrazila chyba s mezerami v Tracy (to už je ok).

Zabalený projekt v RAR – http://leteckaposta.cz/901965226
Takto rozbalený projekt spustit jde, ovšem pokud odkomentuju kontruktor v SongPresenter a 3 řádky v config.neon, zobrazuje se výše uvedená chyba.
Pokud by někdo byl schopen říct, kde je chyba, budu moc rád. :)

Dotazy ohledně Nette:

  • Proč je defaultně složka templates ve složce presenters a ne ve složce app?
  • Je nějaký záměr, že složka model je pojmenovaná v jednotném čísle na rozdíl od presenters a templates?
  • Proč nemusí být (aspoň to tak defaultně není) v config.neon uveden HomepagePresenter?

edit:

  • Všiml jsem si, že, když je v latte šabloně nějaký blok, který zároveň dosazuje text do tagu title:

<h1 n:block=title>Congratulations!</h1>

  • a který zároveň třeba tabulátorem posunu, ve zdrojovém stránky pak je stejné odsazení i uvnitř tagu title. Myslel jsem, že by se do title tagu měl jen dosadit text „Congratulations!“ a ne i mezery před tagem <h1>, které by de facto neměly být jeho součástí, ne?

Editoval Marty_McFly (4. 11. 2018 4:13)

CZechBoY
Člen | 3608
+
+1
-

Presentery se registruji defaultne sami, ale da se to vypnout.
Templates slozku muzes mit kde chces, jen je potreba to nastavit. Defaultne se sablony hledaji v presenters/templates/$presenter/$akce.latte a presenters/templates/$presenter.$akce.latte.
Slozka models uz je jedno jak se jmenuje, to je na programatorovi…

Nedival jsem se na tvuj projekt, ale hadam ze si nedal tridu do namespace.

David Grudl
Nette Core | 8239
+
+3
-
  • Proč je defaultně složka templates ve složce presenters a ne ve složce app?

Můžeš ji dát i do složky app, je to věc vkusu

  • Je nějaký záměr, že složka model je pojmenovaná v jednotném čísle na rozdíl od presenters a templates?

Model je reprezentace systému, seskupení objektů. Obvykle je v aplikaci jeden, proto jednotné číslo.

Myslel jsem, že by se do title tagu měl jen dosadit text „Congratulations!“ a ne i mezery před tagem <h1>

n:makra pojímají element jako celek, navíc včetně odsazení, což je důležité kvůli vizuální podobě výsledného HTML kódu. Jen vnitřek elementu pojímá n:makro s předponou inner-, takže třeba n:inner-block=title. Ale zvyk je to psát bez inner a oříznout mezery lze v layoutu pomocí {block title|trim} nebo {include title|trim}.

Marty_McFly
Člen | 4
+
0
-

Díky za odpovědi. :)

Marty_McFly
Člen | 4
+
0
-

Smazal jsem cache NetBeansu a vytvořil nový projekt úplně stejně a vypadá to, že je všechno ok. Zajímavé, nevím, kde byla chyba.

Editoval Marty_McFly (5. 11. 2018 4:06)

Šaman
Člen | 2667
+
+1
-

Chybí ti složené závorky okolo těch $song->foobar.

Marty_McFly
Člen | 4
+
0
-

Šaman napsal(a):

Chybí ti složené závorky okolo těch $song->foobar.

Ano, už jsem to zjistil, tak jsem ten kus smazal, než jsem si ovšem přečetl tvou odpověď. Díky. :) Už je na čase si jít lehnout po náročné noci… :D

Editoval Marty_McFly (5. 11. 2018 4:11)