Divné vyhodnocení relativních cest

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

Zdravím,

potřeboval bych poradit v jedné maličkosti. Mám routu:

$router[] = new Route('<page=default>[/<id>]', 'Homepage:default');

a pokud měním <page>, všechno běží, jak má. Ale když mám třeba stránku aktuality a nastavím <id> (‚rozkliknu‘ aktualitu), všechny relativní cesty, které mám v presenteru se odkazují, jako bych byl ve složce aktuality (což mi dělá poměrně bordel). Potřebuju totiž načíst galerii ze složky, ale jakmile rozkliknu detail, prohledá se správná složka, ale obrázky se hledají místo v root/img/gallery v root/aktuality/img/gallery.

Omlouvám se za trochu obšírnější popis a předem díky za každou radu!
(Jestli se to tady už někde řešilo, tak bych poprosil odkaz.)

Jan Tvrdík
Nette guru | 2595
+
0
-

Vox wrote:

všechny relativní cesty, které mám v presenteru

Dej příklad relativní cesty v presenteru.

Vox
Člen | 5
+
0
-

Jde mi o tohle (zjednodušeně):

Presenter:

class HomepagePresenter extends BasePresenter {
	public function renderDefault() {
		$this->template->gallery = DirectoryModel::GetContent( "./img/gallery" );
	}
}

Model:

class DirectoryModel {
	$result = array();

	static public function GetContent( $directory ) {
		// Otevre adresar $directory a zjisti obsah: foreach ($dir as $item)
		array_push( $result, "$directory/$item" );
	}

	return $result
}

Když se mi obsah složky vrátí, jsou to položky ve stylu:

  • ./img/gallery/group1.jpg
  • ./img/gallery/group2.jpg
  • ./img/gallery/group3.jpg

Ale protože aktualní stránka je např. root/aktuality/3, vyhodnotí se relativní cesta jako:

  • root/aktuality/img/gallery/group1.jpg
  • root/aktuality/img/gallery/group2.jpg
  • root/aktuality/img/gallery/group3.jpg

Jestli jsem se ale s tou relativní cestou v presenteru sekl (jakože teď vidím, že to nejspíš nebylo nejšťastnější pojmenování), sorry.

voda
Člen | 561
+
0
-

A jak to vypisuješ v šabloně? Mělo by stačit přidat na začátek lomítko.

<a href="/{$path}">...</a>
Vox
Člen | 5
+
0
-

Stydím se, že mi to nedošlo. S lomítkem (a {$basePath}) funguje všechno jak má.

Díky moc!!