Ako pri ziskat Session pri vytvarani extension?

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

Caute neviete mi poradit mam extension a v nej vytvaram factory ktore potrebuje MarkListStorage, lenze MarkListStorage potrebuje Session, ako predam do MarkListStorage Session?

	public function loadConfiguration()
	{
		$config = $this->getConfig($this->defaults);
		$builder = $this->getContainerBuilder();

		$storage = new MarkListStorage(/* Tu potrebujem Session */);


		$builder->addDefinition($this->prefix('markListFactory'))
			->setImplement('\NasExt\Controls\IMarkListFactory')
			->setFactory('NasExt\Controls\MarkList', array($storage));
	}

Editoval duskohu (9. 1. 2014 15:36)

David Matějka
Moderator | 6445
+
0
-

tam nemuzes rovnou vytvaret instanci, musis udelat definici

$builder->addDefinition($this->prefix('markListStorage'))
->setClass('MarkListStorage');

a pokud budes mit spravny typehinty, session se preda (a stejne tak se preda MarkListStorage do MarkList)

duskohu
Člen | 778
+
0
-

No teraz to mam takto, nechcel som aby sa to dalo pouzit cez Autowired. Chcel som vediet ci existuje aj ta moznost co som navrhoval, ale asi nie. Dik za info.

	$builder->addDefinition($this->prefix('storage'))
		->setClass('NasExt\Controls\Storage\MarkListStorage')
		->setAutowired(FALSE);

	$storage = $this->prefix('@storage');

	$builder->addDefinition($this->prefix('markListFactory'))
		->setImplement('\NasExt\Controls\IMarkListFactory')
		->setFactory('NasExt\Controls\MarkList', array($storage));