Více různých mapování presenterů

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

Ahojte, je nějak možné nastavit dvě různá mapování a říct, dle které definice mapování má mapovat který presenter?

config.neon

common:
    application:
        mapping:
            extensions: extensions\*\presenters\*Presenter
            *: app\*\presenters\*Presenter

a routa

<?php
new Route('[<locale=cs cs|sk|en>/]admin/helloWorld/<presenter>/<action>[/<id>]', [
  'module'    => 'helloWorld',
  'presenter' => 'HelloWorld',
  'action'    => 'default',
  'id'        => NULL
], Route::SECURED);
?>

se samozřejmě snaží načíst presenter admin:helloWorld:HelloWorld ve jmenném prostoru app\admin\helloWorld\presenters\HelloWorldPresenter, kde jej nenajde, protože tento presenter se nachází dle druhého mapování na extensions\admin\helloWorld\presenters\HelloWorldPresenter. Je možné tohoto chování docílit, nebo musím všechny presentery v aplikaci mapovat podle mapování *? Díky.

Martk
Člen | 661
+
0
-

V konfiguračním souboru mapuješ jeden modul a tím je extensions, * je použitá jako výchozí.

Načítáš presenter s adresou admin:helloWorld:HelloWorld – modul je admin. V mapování existuje jen extensions a ten se neshoduje s admin, tak je použitá *. Aby se to správně namapovalo, tak se musí použít: extensions:helloWorld:HelloWorld nebo extensions:admin:helloWorld:HelloWorld v tvém případě. Pro vlastní mapování budeš muset napsat vlastní presenter factory, originál je tady: https://api.nette.org/…ory.php.html#…

Editoval Antik (29. 6. 2016 12:35)

Barvoj
Člen | 60
+
+3
-

Pro více info o tom jak funguje presenter mapping doporučuji článek http://zlml.cz/…g-presenteru :)

svezij
Člen | 69
+
0
-

@Antik díky, už jsem to pochopil a funguje mi to i bez vlastní presenter factory ;-)
@Barvoj článek jsem si přečetl, super