Registrace Helperů a proměnných jak pro Presenter, tak pro Control

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

Ahoj,

nelíbí se mi fakt, že v BaseControl a BasePresenter definuji duplicitně helpery a proměnné, které používám v poděděných třídách.

Jakože třeba:

<?php
    	$this->lang = Environment::getVariable('lang');
    	$this->template->registerHelper('json', 'json_encode');
	$this->template->registerHelper('date', 'Helpers::date');


	$this->translator = new Trslt();
	$this->template->setTranslator( $this->translator );
	$this->user = Environment::getUser();
?>

bych rád, kdyby se nastavilo pro oba.

Díky.

Majkl578
Moderator | 1364
+
0
-

Můžeš si na to udělat helper ve třetí třídě a ten z obou míst volat s argumentem $template.


Metoda stejná pro výchozí control i presenter:

protected function createTemplate()
{
	$template = parent::createTemplate();
	//...
	\Helpers\Template::addCustomHelpers($template);
	//...
	return $template;
}

Helper:

namespace Helpers;

class Template
{
	public static function addCustomHelpers(\Nette\Templates\ITemplate $template)
	{
		$this->template->registerHelper('json', 'json_encode');
		$this->template->registerHelper('date', 'Helpers::date');
		//...
	}
}
westrem
Člen | 398
+
0
-

V tom Template si chcel napisat:

$template->registerHelper('json', 'json_encode');
$template->registerHelper('date', 'Helpers::date');