Zasa tie moduly – nemoze najst presenter
- lamerko4ever
- Člen | 13
Cawte, zacinam s nette a prepracoval som sa uz k modulom. Mam vsak problem, pretoze mi nechce najst presenter.
error: Cannot load presenter ‚Project:Default‘, class ‚App\ProjectModule\Presenters\DefaultPresenter‘ was not found in ‚C:\wamp\www\nette-bakalarka\app/ProjectModule/presenters/DefaultPresenter.php‘.
Struktura je nasledovna:
app
ProjectModule
..presenters
.....BasePresenter.php
.....DefaultPresenter.php
..templates
.....Default
........default.latte
presenters
…
templates
V DefaultPresenter mam toto :
namespace ProjectModule;
class DefaultPresenter extends BasePresenter
{
public function renderDefault()
{
}
}
V BasePresenter :
namespace ProjectModule;
use Nette;
/**
* Base presenter for all application presenters.
*/
abstract class BasePresenter extends Nette\Application\UI\Presenter
{
...
}
Odkaz v menu mam v tvare:
<li><a n:href=":Project:Default:default">Pokus</a></li>
Prešiel som už kopec tém, skúšal premazávať cache atď, ale nič nepomohlo.
Riešim to už dva dni a sám už zjavne na nič neprídem, preto ak má niekto čas, tak budem rád :-)
- Grelek
- Člen | 233
Jestli máš Nette 2.1, tak tam je defaultní mapping
App\-Module\-Presenter
, tudíž namespace presenterů uprav na
App\ProjectModule
a mělo by to fungovat.
EDIT 1: (Pomlčka je místo hvězdičky, fórum ji bůhví proč escapuje špatně.)
EDIT 2: Mapování si můžeš nastavit v configu
Editoval Grelek (30. 3. 2014 21:48)
- lamerko4ever
- Člen | 13
Diky za odpoved, ten config.neon je len jeden? Lebo teraz tam mam riadok
mapping:
*: App*Module\Presenters*Presenter
Ten riadok mam zmenit tak ze Presenters vynecham? Potom mi to krici, ze nemoze najst HomepagePresenter v zakladnom adresari
Plus preco je napriklad v presenteroch v zakladnom adresari namespace
App\Presenters;
navyse to Presenters a pri module to netreba?
- lamerko4ever
- Člen | 13
Uz som to vyriesil, nakoniec mam asi inu verziu nette, kde ma byt v namespace este \Presenters na konci (rovnako ako to je aj v tych presenteroch v zakladnom adresari). Diky za radu
- Mysteria
- Člen | 797
To jaký budou mít presentery namespace ovlivníš právě tím mappingem, například:
*: App\*Module\Presenters\*Presenter => namespace ve tvaru App\MujModul\Presenters;
*: App\*Module\*Presenter => namespace ve tvaru App\MujModul;
Je jedno co si vybereš, Nette v sanboxu teď používá tu první variantu (předtím používalo tu druhou).
Samozřejmě pokud ten mapping změníš, tak to musíš upravit ve všech existujících presenterech.
- lamerko4ever
- Člen | 13
Jj, uz som to pochopil, ze to takto funguje :-) zas som o nieco mudrejsi. Je vsak skoda, ze sa to nikde takto normalne vysvetlene nedocitam :)