Kam v Nette ukládat konstanty?

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

Zdravím.
Mám web kde bych chtěl nadefinovat konstanty.
Kam v Nette psát konstanty a jakým způsobem?

Díky za rady

22
Člen | 1478
+
0
-

neon – sekce constants?

Filip Procházka
Moderator | 4668
+
0
-

Ale kdepak, prostě je dáš do odpovídající třídy. Globální konstanty jsou hloupost.

Tabetha
Člen | 140
+
0
-

databaza?…

motorcb
Člen | 552
+
0
-

Uložím to tedy do config.neon

common:
	parameters:
		database:
			...
		facebook:
			appId: '12345' # musi byt string
			secret: 'yourappsecret'

Jak ty hodnoty pak získám v presenteru?

MartinitCZ
Člen | 580
+
0
-
$this->context->parameters["facebook"]["appId"];
$this->context->parameters["facebook"]["secret"];
raketoplan2005
Člen | 147
+
0
-

V presenteru vytvářím komponentu, ve které používám objekt formuláře. Ten se skládá z menších komponent a o tom, které se použijí se rozhoduje podle proměnné v presenteru. V objektu formuláře mám tedy switch na tu proměnnou.

Chtěl bych na to použít konstanty. Ty samé ale potřebuji i ve zpracování formuláře. Kam je mám umístit?

Když je dám do třídy toho formuláře tak pak volám v presenteru při zpracování formuláře \MujForm\Konstanty::KONSTANTA a to je asi špatně, ne?

Šaman
Člen | 2666
+
0
-

Dej konkrétní příklad, takhle těžko radit. Pokud ta konstanta souvisí s formulářem, pak je logické, že k ní přistupuješ MyForm::CONST.

raketoplan2005
Člen | 147
+
0
-

V presenteru vytvářím komponentu pomocí createComponent. Do třídy MyForm si předávám parametr, podle kterého skládám kontejnery do formu. Podle toho se odvíjí i zpracování formu.

protected function createComponentMyForm() {

	$form = new \MyForm($this->presenter->getParameter('phase'));

	$form->addSubmit('submit', 'OK')
		->onClick[] = callback($this, 'myFormProcess');

	return $form;
}


protected function myFormProcess(\Nette\Forms\Controls\SubmitButton $button) {

	$form = $button->getForm();
	$values = $form->getValues();

	if($this->presenter->getParameter('phase') === \MyForm::FIRST){
		// jde mi o to, zda je tady to pouziti \MyForm::FIRST v poradku
	}

}

Editoval raketoplan2005 (30. 3. 2013 23:37)

Šaman
Člen | 2666
+
0
-

Vypadá to, že se ta konstanta skutečně váže k tomu konkrétnímu formuláři, takže umístěná je dobře.
Možná by šlo psát i $form::FIRST. To, že k ni přistupuješ v presenteru nevadí, protože ta metoda obstarává obsluhu tohoto konkrétního formuláře, k té závislosti se hlásí přes parametr $button, takže to není žádná magie.

Jiná otázka je, zda by se ten formulář neobešel bez té konstanty a nebylo by lepší řešit to jinak. To ale těžko říct, když neznáme celý kontext.