Zacatecnik router

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

Zdravim, po precteni prispevku Nette – pohled začátečníka (splní má očekávání?) od LastHunter, jsem se rozhodl, ze to taky vyzkousim. Zatim relativne vsechno chapu, ale pri routovani sem narazil na problem.

Co sem si prohlizel foru, tak to docela dela problemy, proto by mozna nebylo spatny, kdyz by nekdo znalej udelal priklad rout pro ten ukazkovy priklad s tabulkama, urcite by to lidem hodne pomohlo.

A ted k memu problemu.

Mam trochu modifikovany priklad z ukazky, takze presenter Default view default… Na strance mam prochazeni tabulkou (na stranku se vypise jen 30 zaznamu, takze odkaz na dalsich 30). Jakou stranku chci zobrazit predavam v promeny page. Bez rout to vypada treba takhle /document_root/?page=2 a vsechno funguje. Kdyz zapnu routovani odkaz vypada takhle /document_root/2 coz se mi libi, ale vyhodi to 404 stranka nenalezan.

<?php
$router[] = new Route('<page>', array(
    'presenter' => 'Default',
    'view' => 'default',
    'page' => null
));
?>

Editoval Ani (2. 2. 2009 11:00)

_Martin_
Generous Backer | 679
+
0
-

Máš správně nastavený Apache? Vypadá to na nenastavený mod_rewrite.

Mas3r
Člen | 116
+
0
-

Ani napsal(a):

<?php
$router[] = new Route('<page>', array(
    'presenter' => 'Default',
    'view' => 'default',
    'page' => null
));
?>

Pokud vložíš parametr do routeru, tak se „zpěkní“. Pokud máš jen jednu stránku použij SimpleRouter.

Nebo zkus:

<?php
$router[] = new Route('<presenter>/<view>', array(
     'presenter' => 'Default',
     'view' => 'default',
     'page' => null
));
?>
Ani
Člen | 226
+
0
-

Jo tak to bylo tim Apachem mel sem tam nejaky zmatky v nastaveni, diky. :) SimpleRouter jeste prozkoumam.

Pak bych se chtel zeptat, kdyz budu mit tabulku, treba s cukrama a druhou s vyrobcema cukru. Seznam cukru budu chtit vypisovat ve dvou variantach (zkracene, detailne), tak si udelam jeden presenter pro cukr a v nem dva pohledy. A jeden presenter pro vyrobce a vnem jeden pohled? Nebo to mam davat do jednoho presenteru… Proste nejak vim jak to funguje, ale nejsem si jistej s tim navrhem.

PetrP
Člen | 587
+
0
-

Ani napsal(a):

Jo tak to bylo tim Apachem mel sem tam nejaky zmatky v nastaveni, diky. :) SimpleRouter jeste prozkoumam.

SimpleRouter je velmi jednoduchý, defakto všechno hází za otazník. Když nenastavíš žádnou routu (což byl tvůj případ na začátku), tak se zapne tato defaultní SimpleRouter routa:

$router[] = new SimpleRouter(array(
	'presenter' => 'Default',
	'action' => 'default',
));

Pak bych se chtel zeptat, kdyz budu mit tabulku, treba s cukrama a druhou s vyrobcema cukru. Seznam cukru budu chtit vypisovat ve dvou variantach (zkracene, detailne), tak si udelam jeden presenter pro cukr a v nem dva pohledy. A jeden presenter pro vyrobce a vnem jeden pohled? Nebo to mam davat do jednoho presenteru… Proste nejak vim jak to funguje, ale nejsem si jistej s tim navrhem.

Tak nějak, Presenter pro každou logickou jednotku.
V případě toho Cukru bych dal jeden Action (asi default) v něm bych načítal data atd. a dva View (např default a detail), podle kterých se akorát vyberou šablony.