routa pro dva různé presentery
- mauricio
- Člen | 6
Ahoj,
mám následující problém:
2 prezentery a dvě různé akce:
Presenter:Default, action:page
Presenter:Package, action:flag.
Podoba url by měla vypadat takto (současná →
požadovaná):
nazev_webu/default/page/8 → nazev_webu/o-nas (např pro id_page = 8)
nazev_webu/package/flag/11 → nazev_webu/plavby (např pro id_flag = 11)
Odkazy jsou takto:
<?php
{plink Default:page, $t->link}
{plink Package:flag, $f->id}
?>
Routy mám následující:
<?php
$router[] = new Route('/<presenter Default>/<action page>/<id>/', array(
'module' => 'Front',
'presenter' => 'Default',
'action' => 'page',
'id' => array(
Route::FILTER_TABLE => array(
'o-nas' => '8'
),
),
));
?>
a
<?php
$router[] = new Route('/<presenter Package>/<action flag>/<id>/', array(
'module' => 'Front',
'presenter' => 'Package',
'action' => 'flag',
'id' => array(
Route::FILTER_TABLE => array(
'plavby' => '11'
),
),
));
?>
Pokud nechám jen první routu (druhou zakomentuji), tak funguje pro dané
odkazy (plink Default:page). Odkazy (plink Package:flag)
spadnou prostě do defaultní routy.
Pokud použiji obě routy, tak i druhý odkaz (plink Package:flag) mi
spadne do první routy, tzn místo presenteru Package a akce
flag se zavolá dle první routy Default a akce
page.
Nevíte někdo jak tohle řešit? Buď mám chybu nebo na to jdu úplně
špatně.
Pokud úplně špatně jak tedy řešit takovouto věc – 2 presentery a
různé akce – jak to vyřešit ať se použije pokaždé jiná routa a jak
to nadefinovat, nebo jedna routa, ale rozliší se jaký prezenter a jaká akce
se má zavolat.
Díky
Editoval mauricio (21. 4. 2015 14:25)
- Lukeluha
- Člen | 130
Doporučoval bych v router factory si projít všechny url, které můžou být definované (nejspíš z db), popřípadě ručně a nadefinovat ji každou zvlášť. Takže např.
$default = $this->model->getDefaultsUrl();
foreach ($default as $url) {
$router[] = new Route($url->name, array(
'module' => 'Front',
'presenter' => 'Default',
'action' => 'page',
'id' => $url->id
));
}
a to stejné i pro url pro Package presenter :)