Zasa tie moduly – nemoze najst presenter

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

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

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

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

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

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

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 :)