Jak předat config parametry do BasePresenteru? (Nette 2.3.0)

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

Dřív jsem na získání parametrů konfigurace používal expand, teď je preferováno DI. BasePresenter ale, jako abstraktní třída, nejde jako služba zaregistrovat. Jaký způsob bych měl teď zvolit?

Marek Šneberger
Člen | 130
+
+4
-

Vytvoř si nějakou službu (třídu), které předáš potřebné parametry a tu třídu si injektni do BasePresenteru a vesele používej.

looky
Člen | 99
+
+4
-

Můžeš využít nové DecoratorExtension

ukázka použití

Editoval looky (7. 3. 2015 0:33)

Mysteria
Člen | 797
+
0
-

Tohle se mi líbí. Díky.

ChocoTUx
Člen | 31
+
0
-

Ahoj,

ono to prostě nejde nějak takto? Jako je škoda, že tam musím rvát jenom instance nových tříd, když si chci předávat porůznu v abstraktních třídach nějaké nastavení systému…

services:
	trida: %param%
public function injectTrida($param){
	$this->param = $param;
}

Editoval ChocoTUx (13. 5. 2015 10:47)

Jan Suchánek
Člen | 404
+
0
-

A co jako tadyk?

Nebo tadyk?

ChocoTUx
Člen | 31
+
0
-

No v obojím máš jeden ze dvou problémů.
Buď parametr předáváš vrchní třídě – tj ta která má instanci. Ale jak to chceš předat například abstraktní třídě.
Nebo nepředáváš parametr ale instanci jiné třídy. (to je sice řešení, ale připadá mi zbytečně složité).

Popřípadě jsem v obou odkazech nenarazil na kod, který bych řešil oba problémy současně.

Jan Suchánek
Člen | 404
+
0
-

No výhoda je že máš presenter v cache.

Jan Suchánek
Člen | 404
+
0
-

Mrkni i na další commity.

Jan Suchánek
Člen | 404
+
0
-

trida: %param% nemůže takhle fungovat porovnává se název třídy a array není třída můžes to ale předávat pomocí služby která přímo parametry dostane.

ChocoTUx
Člen | 31
+
0
-

Asi jsi odpověděl na můj dotaz.. Jestli to jde nebo ne. Jako injektnout dalsi tridu umim (a uz pouzivam), ale nechtelo se mi kvuli predani jednoho nastaveni typu „zapnout redirect“ vytvaret celou tridu… .

Šaman
Člen | 2635
+
0
-

Na to slouží ten decorator. Sekce services říká, jaké služby se mají připravit. A BaseCokoliv sama o sobě žádná služba není, nebude se vytvářet instance.

David Grudl
Nette Core | 8154
+
0
-

Tohle pravděpodobně dosud nefungovalo, fix je tu https://github.com/…2254d1635401, použijte nejnovější nette/bootstrap.