Jak načíst hodnotu z konfigurace do šablony?

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

Potřebuji si do šablony předat hodnotu z konfigurace, která je v config.neon

facebook:
    appId: "1504449449787274" # tohle chci dostat do šablony
abstract class BasePresenter extends Nette\Application\UI\Presenter {
	public function beforeRender() {
		parent::beforeRender();

		$this->template->facebookAppId = "Jak se dostat do configu?";
	}
}

Jak to provést co nejjednodušeji? Ideálně na jeden řádek.

Šaman
Člen | 2640
+
+3
-

Na jeden řádek jen nečistě: $this->context->parameters[‚facebook‘];
Musíš to mít ale v sekci parameters: a hodnota bude pole s jedním prvkem ['appId' => "1504449449787274"]

Myiyk
Člen | 321
+
0
-

Proč nečistě? Aspoň nemusím psát kvůli jedné proměnné další třídu.

Šaman
Člen | 2640
+
0
-

U presenterů se to snese, ale obecně je lepší, když třída jasně deklaruje svoje závislosti. Tvůj presenter tedy nebude fungovat bez proměnné v configu, ale z veřejného API třídy to není poznat. Taky se ti to bude špatně automaticky testovat, protože ten parametr jednoduše nepředáš odjinud.

Jako čisté a nejjednodušší řešení bych viděl public setter a jeho nastavení v configu:

# App\Presenters\FbPresenter.php
protected $fbAppId;

public function setFbAppId($fbAppId)
{
	$this->fbAppId= $fbAppId;
}
# config.neon
parameters:
	facebook:
		appId: "1504449449787274"

services:
	-
		class: App\Presenters\FbPresenter
		setup:
			- setFbAppId(%facebook.appId%)

Editoval Šaman (24. 7. 2014 1:11)