Routování modulů
- grogy
- Člen | 147
Ahoj, předem říkám, že s Nette začínám, takže mám takový, pro vás – triviální dotaz.
Jde mi o to jak napsat routy pro moduly (chci mít oddělené presentery i templatky jak samotné stránky tak administrace pomocí složek, viz níže).
<?php
/* Takto jsem zatím napsal routy */
$router[] = new Route('index.php', array(
'module' => 'Content',
'presenter' => 'Homepage',
'action' => 'default',
), Route::ONE_WAY);
$router[] = new Route('<presenter>/<action>/<id>', array(
'presenter' => 'Content:Homepage',
'action' => 'default',
'id' => NULL));
$router[] = new Route('administrace/<presenter>/<action>/<id>', array(
'presenter' => 'Administrace:Default',
'action' => 'default',
'id' => NULL));
?>
A struktura složek:
/nette/
– /app/
– – – /presenters/
– – – – – /AdministraceModule/
– – – – – – – /DefaultPresenter.php
– – – – – /ContentModule/
– – – – – – – /HomepagePresenter.php
– – – – – /BasePresenter.php
… prakticky to samé u templates. V example jsem našel něco podobného, ovšem s tečkami v adrese a já potřebuji lomítka. (Nevím jak to upravit, ale spíše co mám tady na tom špatně. Díky za každou radu).
- kucix
- Člen | 33
Zkus prohodit pořadí rout…
<?php
/* Takto jsem zatím napsal routy */
$router[] = new Route('index.php', array(
'module' => 'Content',
'presenter' => 'Homepage',
'action' => 'default',
), Route::ONE_WAY);
$router[] = new Route('administrace/<presenter>/<action>/<id>', array(
'module' => 'Administrace',
'presenter' => 'Default',
'action' => 'default',
'id' => NULL));
$router[] = new Route('<presenter>/<action>/<id>', array(
'module' => 'Content',
'presenter' => 'Homepage',
'action' => 'default',
'id' => NULL));
?>
- grogy
- Člen | 147
Routy vyhovují – přehození pořadí pomohlo. Chyba byla ještě jinde a to, že presenter se musí jmenovat ve tvaru:
Module_NamePresenter
Zajímavé, je to tak i v Zendu, takže se divím, že mě to netrklo. Ovšem co je horší, že jsem na to musel přijít pokus omyl :( Bohužel nikde v dokumentaci a ani tady na fóru jsem zmínku o tom nenašel (bude, ale někde hluboku pohřbená a pak v examples, jen hledat na správném místě).
Je to asi jako s nastavením šablony. Jméno @error-layout.phtml a setr na nastevení: setLayout(‚error-layout‘);. Logické věci, pokud to někde uvidíte nebo znáte. Pro někoho kdo s Nette začíná katastrofa a hromada zkoušení.
Editoval grogy (2. 8. 2009 16:47)