Ako dostat parameter z neonu do presentreu/komponenty

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

Caute viete mi poradit chcel by som dostat parameter z neonu do presenteru komponenty viem len o tychto sposoboch, ale ani jeden sa mi velmi nepaci. a ked su len tieto tak ktory mam pouzivat?
1.

/**
 * INJECT SystemContainer
 * @param SystemContainer
 */
public function injectSystemContainer(Nette\DI\Container $systemContainer) {
    $systemContainerParameters = $systemContainer->getParameters();
    $this->myParam = $systemContainerParameters['myParam'];
}

2.

$this->myParam = Environment::getConfig('myParam');
vvoody
Člen | 910
+
0
-

3. parameter predať službe a službu injectovať

duskohu
Člen | 778
+
0
-

Mozem poprosit o priklad?

David Matějka
Moderator | 6445
+
0
-

jestli jedes na masteru, resil bych to pres tovarnicky od hosiplana

https://doc.nette.org/…tion/factory

vvoody
Člen | 910
+
0
-

Čo konkrétne nieje jasné?

  • vytvorenie služby
  • jej zaregistrovanie do configu
  • predanie parametrov
  • injectovanie služby do presenteru
  • použitie parametrov zo služby v presenteri
enumag
Člen | 2118
+
0
-

Když to tak čtu, jak nejlépe dostat parametry z neonu sekce parameters do presenteru aniž bych použil $this->context? Do komponenty je dostanu snadno skrz HosipLanovu Di factory, ale do presenteru nevím jak.

Filip Procházka
Moderator | 4668
+
0
-

Dělá se to tak, že si vytvoříš třídu třeba Kalkukacka, tu nakonfigurujes

services:
	calc: Kalkulacka(%myParam%, @db)

A tuto si uz injetnes snadno

public function injectCacl(Kalkulacka $calc)
{
	$this->calc = $calc;
}

A místo bastlení logiky v presenteru, která by parametr používala, ji hezky budeš mít v metodě této třídy a v presenteru ji pouzijes.