Změna URL / pomoc s routováním (začátky)
- Checkpoint
- Člen | 34
Zdravím,
potřeboval bych pomoci s routováním URL.
Představa, jak by URL mělo vypadat ⇒
neco/kategorie/nazevkategorie
Současné URL vypadá nějak takto ⇒
neco/kategorie/detail/?idKat=1
Za každou radu budu rád, pročítal jsem dokumentaci, ale pořád to pořádně nechápu.
Děkuji.
- Checkpoint
- Člen | 34
Oli napsal(a):
Sice už to je skoro 2 roky stary, ale je to moc pěkná přednáška.
Super, mrknu na to. Díky. :)
- Checkpoint
- Člen | 34
Oli napsal(a):
Sice už to je skoro 2 roky stary, ale je to moc pěkná přednáška.
Tak jsem se na tu přednášku podíval, ale můj problém stále přetrvává.
Zhruba takto vypadá můj RouterFactory.php
<?php
class RouterFactory
{
/**
* @return Nette\Application\IRouter
*/
public function createRouter()
{
$router = new RouteList();
// Admin
$router[] = new Route('admin/<presenter>/<action>/<id>', array(
'module' => 'Admin',
'presenter' => 'Admin',
'action' => 'default',
'id' => NULL,
));
// Front (Homepage)
$router[] = new Route('[<presenter>/]<action>/<idAds>', array(
'module' => 'Front',
'presenter' => 'Homepage',
'action' => 'default',
'idAds' => NULL,
));
// Front (Kategorie)
$router[] = new Route('<presenter>[/<action>]/<idKat>', array(
'module' => 'Front',
'presenter' => 'Kategorie',
'action' => 'default',
'idKat' => NULL,
));
return $router;
}
}
?>
Problém je v tom, že buď funguje jedna routa, nebo druhá. Záleží na pořadí. Je možné, že jsem z té přednášky špatně pochopil. :)
- Oli
- Člen | 1215
Problém je ten, že takhle, když jsou v URL 2 hodnoty, tak ta routa neví jestli to je <action>/<idAds> nebo <presenter>/<idKat>. Oba mají 2 hodnoty a proto se vyhodnotí ta první. Pokud by jsi měl ten první presenter jako povinný a byl v defaultu + 2. parametr (<idKat>), tak by to mohlo funguvat. Protože pokud by jsi měl 3 parametry, tak to spadne pod tu první routu a pokud budou jen 2 tak pod tu druhou…
- Checkpoint
- Člen | 34
Oli napsal(a):
Problém je ten, že takhle, když jsou v URL 2 hodnoty, tak ta routa neví jestli to je <action>/<idAds> nebo <presenter>/<idKat>. Oba mají 2 hodnoty a proto se vyhodnotí ta první. Pokud by jsi měl ten první presenter jako povinný a byl v defaultu + 2. parametr (<idKat>), tak by to mohlo funguvat. Protože pokud by jsi měl 3 parametry, tak to spadne pod tu první routu a pokud budou jen 2 tak pod tu druhou…
Tak teď jsem to vůbec nepochopil. :D
Zkusím ještě párkrát prostudovat dokumentaci. Zdá se, že mám ještě
dlouhou cestu před sebou, než tomu plně porozumím. :)