this->template->premenna po odoslaní formuláru

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

Zdravím.

Základné konfiguračné nastavenia si vyberám z databázy v BasePresenteri a ukladám ich do $this->template->conf, aby som ich mohol hneď pekne vypísať (napr. meta-tagy, hlavný title stránky atď.), no mám tam aj riadiace premenne.

Jedna z nich je aj conf['antispam'], ktorá, ak má hodnotu „1“, vo formulári na pridanie komentáru(nachádzajúca sa v ClankyPresenter extends BasePresenter) zobrazí captchu takto:

$form = new AppForm;
if($this->template->conf['antispam']==1)$form->addCaptcha('captcha')
    		->addRule(Nette\Forms\Form::FILLED, "Rewrite text from image.")
    		->addRule($form["captcha"]->getValidator(), 'Try it again.');

Formulár mi pekne vykreslí, no problém nastane po odoslaní formuláru, kde mi vyhodí The variable 'conf' does not exist in template.(takže predpokladám, že po odoslaní sa najskôr spracuje formulár, až potom zvyšok).

Je moje riešenie dobré, alebo sa dajú konfiguračné nastavenia prenášať aj ináč?
Skúšal som perzistentné parametre, ale mimo to, že mi to nefungovalo, to asi nie je to práve.

studna
Člen | 181
+
0
-

Co třeba:
BasePresenter.php

public function getConfig()
{

	return CaryMary::getConfig();

}

Presenter extends BasePresenter

public function xyz()
{

	if( (bool) $this->getConfig()->antispam )
		var_dump('Antispam true');
	else var_dump('Antispam false');

}
qacer
Člen | 8
+
0
-

vdaka, toto je presne to, co som myslel :)