Jak předat parametr z configu nebo context do modelu

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

Zdar,
zvyk jsem si psát co nejvíc parametrů do config.neon a mám tam teď spoustu zbytečností – například název webu, administrační mail atd, abych to nemusel přepisovat u nových webů všude v kódu. Ale teď nevím jak předat parametr do modelu nebo aspoň celý kontext? V presenterech to samozřejmě jde.

vvoody
Člen | 910
+
0
-

https://doc.nette.org/cs/configuring#… pozri sa dolne na „Kompletní příklad“, na parametre sa odkazuje pomocou znaku percenta.

Ot@s
Backer | 476
+
0
-

Předávání kontextu do modelu není moc košer (musel bys k tomu využít presenter, resp. setter modelu někde ve startUp() „BasePresenteru“). Správné řešení by bylo tyto parametry „injektovat“ do services modelu přímo v config.neon (viz. dokumnetace konfigurace) + úpravy konstruktorů jednotlivých tříd modelu. Záleží, jak moc máš projekt rozjetý… Když to ale sjednotíš, tak nebudeš chtít jinak.

Hafran
Člen | 121
+
0
-

vvoody: díky, to prozatím pomůže. ;)

Ot@s: to injectování mě taky napadlo, nicméně injectování je teď pomalu nehledatelné jak se přidaly metody inject a injectSomething, tak v tom mám takovej hokej, že si možná počkám, až někdo napíše nějakej smysluplnej příklad :)

vvoody
Člen | 910
+
0
-

Ot@s DI container vie predsa injectovat aj sam seba do sluzby a kludne aj cez autowire, samozrejme je to uplne proti DI ;)

Ot@s
Backer | 476
+
0
-

vvoody napsal(a):

Ot@s DI container vie predsa injectovat aj sam seba do sluzby a kludne aj cez autowire, samozrejme je to uplne proti DI ;)

Proto jsem psal, že to není košer. A co se týče injektování contextu do služby, tak to vůbec nevím (= ani by mě nenapadlo), že to jde. Jednak k vůli tomu, že je to praktická (objekty v „kruhu“) i teoretické prasárna (proti DI).

Hafran
Člen | 121
+
0
-

A moh bych někoho zkušenějšího poprosit o nasměrování jak bych to mohl injectovat „správně“, tedy přes injectSomething() nebo injectPrimary? Chci to dát do BaseModelu abych to měl ve všech poděděných a netrápil se s parent::__construct. Ale nemůžu o tom nic najít :/

vvoody
Člen | 910
+
0
-

DI container neinjectuj do sluzby, ono to sice ide, ale je to fuj. Predaj si tam len parametre ktore potrebujes.

Jan Mikeš
Člen | 771
+
0
-

Nebo si vytvorit vlastni service, ktery pak muzes predat potrebnemu modelu.