Nefunkční generování linku který obsahuje ‚/‘
- iwory
- Člen | 147
Ahoj, řeším tu takový malý/velký problém ohledně generování
routy.
Jedná se o dynamické vytváření rout dle daného dokumentu.
Dokument může mít 6 typů (složka, článek, galerie, odkaz, obrázek,
soubor)
Napsal jsem routu která mi vrací adresu daného dokumentu na základě id
$this->presenter->link('Document:detail', array('id' => $document['id']))
// Routa
$documentModel = $this->documentModel;
$pageRoute = new DocumentRoute('<id>', array(
'id' => array(
Route::FILTER_OUT => function($id) use ($documentModel)
{
if(!is_numeric($id)) {
return $id;
}
else {
return $documentModel->prepare_documentLink($id);
}
}
),
'presenter' => 'Document',
'action' => 'detail'
));
$pageRoute->documentModel = $this->documentModel;
$router[] = $pageRoute;
Všechno funguje dobře, ale problém příchází v podobě vytváření odkazu na obrázek, soubor nebo link.
V případě článku či složky se vezme její název a ošetří se pomocí webalize. Tudíž je všechno v pořádku a vrátí se správná url.
Bohužel v problémových případech se vrací i adresy typu:
/vysledky
http://www.neco.cz/auta
/shared/document/images/1023.png
Jakmile vrácená hodnota obsahuje „/“, tak ji …presenter->link() nevrátí a vrátí pouze předané id, tedy třeba
/document/detail/1345
Takže vím kde je problém ale netuším jak ho řešit nebo zda ho vůbec řešit a neudělat to jinak, ale to zase moc netuším jak udělat globálně.
Díky moc za případné podněty
- David Matějka
- Moderator | 6445
Nevim, jestli presne chapu, ale defaultne neni povoleno v parametru routy
/
, viz kod, takze
$pageRoute = new DocumentRoute('<id .+>'...
by to mohlo vyresit.