Nefunkční generování linku který obsahuje ‚/‘

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
iwory
Člen | 147
+
0
-

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
+
0
-

Nevim, jestli presne chapu, ale defaultne neni povoleno v parametru routy /, viz kod, takze

$pageRoute = new DocumentRoute('<id .+>'...

by to mohlo vyresit.

iwory
Člen | 147
+
0
-

Bohužel nepomohlo, jakmile $documentModel->prepare_documentLink($id) vrátí „/“ tak už se nedostane ven.
EDIT: On není problém s parsováním aktuální url, ale s generováním nového odkazu.

Editoval iwory (28. 2. 2015 1:00)