Databazova routa plus staticke routy
- bazo
- Člen | 620
ahojte, v aplikácii mam statické stránky(presentery) a potom stránky
uložené v db.
snažím sa nejak spojazdniť routovanie, aby keď sa jedna o stránku,
o ktorej existuje záznam v db sa použil presenter Stranky, inak sa použije
iný presenter.
Vytvoril som si aj vlastný router, skopírovaním a úpravou Route ktorý komunikuje s db, ak nájde záznam nastaví presenter na Stranky, inak pokračuje funkcia match ďalej ako u Route.
Aj to funguje, ale problém je, že pri vstupnej url napr domena.sk/slug ma to presmeruje na domena.sk/stranky/>id=1. Ide mi o to, aby adresa ostala rovnaká, len sa zmenil presenter.
Request nastavujem takto
<?php
$params['id'] = $stranka->id;
return new PresenterRequest(
'Stranky',
$httpRequest->getMethod(),
$params,
$httpRequest->getPost(),
$httpRequest->getFiles(),
array(PresenterRequest::SECURED => $httpRequest->isSecured())
);
?>
Tipnem si, že to ide vyriešiť nejak úplne jednoducho, ale asi som
natvrdlý keďže mi žiadne riešenie nenapadá.
Díky za pomoc.
- Filip Procházka
- Moderator | 4668
Rozhodně nám ukaž ještě definici routeru, protože tam bude určitě
hlavní problém. Definicí myslím jeho nastavení v
app/bootstrap.php
.
$router[] = new MyCMSRoute("...
Editoval HosipLan (5. 3. 2011 17:25)
- bazo
- Člen | 620
medzitym som s tym troska laboroval, definicia routy
<?php
$router[] = $frontRouter = new MultiRouter('Front');
$frontRouter[] = new MyRoute('<slug>', 'Stranky:default');
$frontRouter[] = new Route('<presenter>/<action>[/<id>]', 'Domov:default');
?>
router je tu https://gist.github.com/856495
niekde tam prichadza k redirectu, ktory potom matchne tu druhu routu
- bojovyletoun
- Člen | 667
vždyť construct url nevrací nic. Nejspíš máš defaultně zapnuto Presenter::$autoCanalize, takže při každém požadavku se volá Nette\Application\Presenter::canonicalize(). To dál volá createRequest → volá router. No a jelikož první routa (myRoute) nic nevytvoří, tak se dál pokračuje druhou.
Ale podle mě není potřeba MyRoute – stačí použít třeba Route a filtrovací tabulky.