Volání signálu – více modulů

- aGr
 - Člen | 45
 
VYŘEŠENO
Mám (pro testovací účely) v @layout:
<a n:href="Sig! 5">Kosik</a>
v HomepagePresenteru (který je v namespace FrontModule) mám funkci
handeSig($id). Po kliknutí na link, ale Laděnka:
Cannot load presenter 'Front:Front:Homepage. Proč proboha tam je
to dvojité Front? Je mi jasné, že zde je kámen úrazu. Normální
„Homepage:“ funguje v pořádku! I odkaz na signál je znetvořený –
.../front.homepage/default/5?do=Sig. Špatně signál volám?
Přeci se volá na současný presenter, takže není třeba upřesňovat místo
(resp. ani nevím jak).
Díky moc za radu, už mě to otravuje pár dnů :).
Editoval aGr (24. 2. 2012 16:38)

- Jan Tvrdík
 - Nette guru | 2595
 
Signály se normálně píší malými písmeny (sig!), ale to
by na to snad nemělo mít vliv.

- aGr
 - Člen | 45
 
Ot@s napsal(a):
Vypadá to divně… Vyzkoušej onen signál v sandboxu (nebo v examples s moduly).
Jak máš napsané routy aplikace?
V sandboxu funguje. Routy jsem měl takto:
$router[] = new Route('index.php', 'Front:Homepage:default', Route::ONE_WAY); //homepage
$router[] = $adminRouter = new RouteList('Admin');
$adminRouter[] = new Route('admin/<presenter>/<action>', 'Homepage:default');
$router[] = $frontRouter = new RouteList('Front');
$frontRouter[] = new Route('<presenter>/<action>/<name>', array(
						    'presenter' => array(
						        Route::VALUE => 'Homepage',
						        Route::FILTER_TABLE => array(
						            'produkt' => 'Product',
						            ...preklady dalsich presenteru
						        ),
						    ),
						    'action' => 'default',
						    'id' => NULL,
					));
$router[] = new Route('<presenter>/<action>[/<id>]', 'Front:Homepage:default'); //zbytek
Teď koukám, že ta poslední je nějaká zbytečná. Zkusil jsem tedy routy upravit takto:
$router[] = new Route('index.php', 'Front:Homepage:default', Route::ONE_WAY); //index.php
$router[] = new Route('', 'Front:Homepage:default');  //homepage
$router[] = $adminRouter = new RouteList('Admin');
$adminRouter[] = new Route('admin/<presenter>/<action>', 'Homepage:default');
$router[] = $frontRouter = new RouteList('Front');
$frontRouter[] = ...
a signál funguje! Jsem to ale blb, měl jsem koukat do routeru rovnou. Je takhle ta druhá routa pro Homepage v pořádku?
EDIT: není to v pořádku. Signál funguje jen na homepage. Jakmile to přesunu do BasePresenteru, který všechny ostatní dědí, dostávám v jiných presenterech stejné chyby. Jdu si přečíst info o routách, neboť tomu evidentně nerozumím..
Editoval aGr (24. 2. 2012 16:20)