Cool routa s nazvem misto id + prepis presenteru a akce
- medunrad
- Člen | 27
Ahoj, řeším problém s rutami, je to pro mě celkem magie.
Mám SearchPresenter, který má metodu renderCompany($id).
Co chci je, aby Search:company $id melo url něco jako vyhledavani/firma/nazev-firmy-id
V routeru mám momentálně aktuální konfiguraci:
$router[] = new Route('search/company/<id>', array(
'presenter' => array(
Route::VALUE => 'Search',
Route::FILTER_TABLE => array(
'vyhledavani' => 'Search'
)
),
'action' => array(
Route::VALUE => 'company',
Route::FILTER_TABLE => array(
'firma' => 'company'
)
),
'id' => array(
Route::FILTER_IN => [$this->routerHelper, 'getIdByUrl'],
Route::FILTER_OUT => [$this->routerHelper, 'getUrlById']
)
));
Překlad id na název firmy mi funguje, nicméně otatní věci ne.
Vygenerovaná url je ve tvaru
/search/company/nazev-firmy-id.
Uplně nerozumím tmu, proč se nepřeloží i presenter a akce.
Budu vděčný za jakoukoli radu.
- David Matějka
- Moderator | 6445
ahoj, je to tim, ze ani to „search“ ani „company“ nemas v url jako
parametry, tedy jako <presenter>
resp
<action>
, takze nette nevi, kde by to nahradilo.
- medunrad
- Člen | 27
Ještě mám jeden doplňující dotaz, který se teď objevil v souvislosti s výše implementovaným routerem.
$router[] = new Route('<presenter>/<action>/<idc>', array(....));
a pod tím mám další routu ve tvaru:
$router[] = new Route('<presenter>/<action>[/<id>]', array(...));
Měl jsem za to, že horní routa se aplikuje pouze na prezentery, které
mají jako svůj parametr $idc,
nicméně routa se aplikuje na všechny presentery s akcemi, které
přijímají parametr, takže mi aplikace padá, protože se snaží tahat
název firmy podle každého id, které příjde jako parametr libovolnému
presenteru akci.
Potřeboval bych, aby se horní routa aplikovala pouze na presenter
Search a akci company.
Toto je možné?