Routování modulů

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

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

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

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)