Nette 2.1 jak získat vlastní hodnoty z neon.config

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

Zdravim.
Jak si v Nette 2.1 sahnu do neon.config pro hodnotu me proměnné?
neon.config:

parameters:
                myAppId: '123456789'
Glottis
Člen | 129
+
0
-

v presenteru $this->context->parameters[‚myAppId‘]

motorcb
Člen | 552
+
0
-

@Glottis:

Neměl by se náhodou v Nette 2.1 přestat používat context?

Grelek
Člen | 233
+
0
-

Měl, musíš si injectnout Configurator (myslím).

Michal Vyšinský
Člen | 608
+
+1
-

tu config hodnotu by sis měl předat přímo do služby (neměl by si s ní v presenteru pracovat):

parameters:
	myAppId: '123456789'
services:
	myService: MyServiceClass(%myAppId")

Editoval CherryBoss (8. 7. 2013 10:36)

motorcb
Člen | 552
+
0
-

@CherryBoss:
Jak bych to měl udělat když si chci to myAppId posílat do šablony? To ze služby nedokážu…

Michal Vyšinský
Člen | 608
+
0
-

No tak to udělej injektnutím Containeru:
presenter:

/**
 * @var \Nette\DI\Container
 */
private $container;
.
.
.
public function injectContainer(\Nette\DI\Container $container) {
	$this->container = $container;
}
Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Předávat si Configurator nedává smysl, ani to jednoduše nejde, zato si lze předat Nette\DI\Container, což je instance kontextu, a lze ji stejně jako cokoliv jiného kdekoliv autowiringem požadovat jako závislost.

norbe
Backer | 405
+
0
-

motorcb napsal(a):

@CherryBoss:
Jak bych to měl udělat když si chci to myAppId posílat do šablony? To ze služby nedokážu…

Můžeš si ale injectnout obálku nad tou hodnotou myAppId.. Např:

class MyApplication extends \Nette\Object {
	private $id;
	public function __construct($appId) {
		$this->id = $appId;
	}
	public function getId() {
		return $this->id;
	}
}
services:
    application: MyApplication(%myAppId")

Do šablony si jí můžeš předat buď celou nebo si z ní jen vytáhnout id…

Grelek
Člen | 233
+
0
-

Omlouvám se, popletly se mi názvy tříd (a že mi to vůbec nedošlo…). Samozřejmě jsem myslel Container a ne Configurator.

besanek
Člen | 128
+
0
-

Od 2.1 tuším funguje nastavování presenterů v configu. Asi takhle.

HomepagePresenter:
	class: App\HomepagePresenter
	 setup:
		- setAppId(%appId%)
zimmi
Člen | 94
+
0
-

Mohlo by tě zajímat tohle.