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

Zdravím,

potřebuju v presenteru získat parametr z config.local.neon, který jsem si nastavil.

Našel jsem funkci getService(), která by měla splňovat tento účel, ale je zastaralá a v poznámce je napsáno, že mám použít DI. Je to jen malý kousek kodu(handle) a nechce se mně kvůli tomu tvořit komponentu, kde budu mít „3 řádky kódu“.

Je teda nějaká rozumná cesta?

Jan Endel
Člen | 1016
+
0
-

K cemu ten parametr mas? Mozna by to sle resit jinac.

trejjam
Backer | 65
+
+2
-

Je to trochu drbání levou novou za pravým uchem, ale:

parameters:
	parameterFoo: foo

services:
	-
		create: Namespace\Presenter
		setup:
			- setParams(%parameterFoo%)
namespace Namespace;

class Presenter extends BasePresenter { //Nebo class BasePresenter extends UI\Presenter
	protected $parameter;

	public function setParams($parameter) {
		$this->parameter=$parameter;
	}

	public handleFoo() {
		dump($this->parameter);
	}
}

(Teď střílím trochu od boku)

Filip Procházka
Moderator | 4668
+
0
-

Já bych to udělal raději takto, ale řešení co poslal @trejjam není vůbec drbání levou nohou za pravým uchem ale správné řešení (jenom by to chtělo maličko lépe pojmenovávat metody, jinak dobrý) :)

Azathoth
Člen | 495
+
0
-

@FilipProcházka ale například když chceš mít v konfiguraci kolik položek má být na stránce při stránkování, tak taková informace patří do presenteru a i když se mi více líbí konstruktorová injekce než setterová, tak o tomhle by model vůbec neměl vědět.

Jan Mikeš
Člen | 771
+
+2
-

@Azathoth klidne muzes mit vypis polozek v komponente, zaregistrovat tovarnicku na komponentu jako sluzbu a te injectnes parametr kolik polozek na strance ma byt, ten pak predas komponente ;)