Jak se dostat v presenteru k proměnným wwwDir nebo appDir?

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

Ahoj nevíte jak se dá dostat v presenteru ke konstantám wwwDir a appDir? Musí se to dělat přes inject?
Díky

Filip Procházka
Moderator | 4668
+
+14
-

Položím ti záludnou otázku: Proč bys to dělal?

Na co ty složky potřebuješ? Nejspíše aby jsi pracoval s nějakými soubory, že? Například s obrázky? Nebylo by lepší napsat si rovnou třídu, která bude řešit práci s obrázky?

class ImageStorage extends Nette\Object
{
	private $dir;

	public function __construct($dir)
	{
		$this->dir = $dir;
	}

	public function save($file, $contents)
	{
		file_put_contents($this->dir . '/' . $file, $contents);
	}
}

(konkrétnější příklad: https://gist.github.com/3845361#…)

v configu

services:
	imageStorage: ImageStorage(%wwwDir%/images)

v presenteru

class MyPresenter extends BasePresenter
{
	/** @var ImageStorage */
	private $imageStorage;

	public function injectImages(ImageStorage $storage)
	{
		$this->imageStorage = $storage;
	}

	// použití

Výhody? Znovupoužitelnost a jednoduchý přístup k úložišti kdekoliv v aplikaci ;)

Honza Kuchař
Backer | 1661
+
0
-

Prima! Pěkné! :-)