Vlastny ITemplate / SqlTemplate

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

Zdravim,
uz dlhsiu dobu sa snazim vytvorit objekt, ktory by vyuzival ako zdroj dat sablon databazu, teda nejaky SqlTemplate. Problem vsak neni v tvorbe samotneho objektu, ale v jeho implementovani do presenteru. Ked uz je funkcia createTemplate($class), preco sa parameter $class neda niekde rozumne nastavit?

A navyse pre famotnu funkcnost je nutne upravit aj kopu funkcii presenteru, inak nefunguju layouty a includy. Alebo som na nieco pozabudol? Tu je moje riesenie, skusi mi niekto poradit ako to urobit jednoduchsie? A to nevravim o tom ze SqlTemplate musi implementovat interface IFileTemplate, i ked so subormi nema nic spolocne. Nestalo by toto sa upravu a nejake zjednodusenie uz vo frameworku?

Tu je moje riesenie implementacie:

	// BasePresenter
	// ...

	protected function createTemplate($class = NULL) {
		$template = parent::createTemplate('\\System\\Templating\\SqlTemplate');
		// pripadne nastavenie objektu
		return $template;
	}


	public function sendTemplate() {
		$template = $this->getTemplate();
		if (!$template) return;

		// to je jedno ako si oznacim templaty v databaze, tu je napr. Admin:Home:default
		$template->setFile($this->name . ':' . $this->action);

		$this->sendResponse(new \Nette\Application\Responses\TextResponse($template));
	}



	public function findLayoutTemplateFile() {
		// pokial druhy znak neni ':' tak hadze error ze subor neexistuje, WTF?
		return '::' . $this->layout . '@layout';
	}

	// ...

Editoval lupo112 (23. 1. 2012 23:48)

David Grudl
Nette Core | 8148
+
0
-

Pokud by se toho někdo ujmul a zpracoval refactoring šablon do nějakého RFC, bylo by to fajn.

lupo112
Člen | 11
+
0
-

ak najdem cas tak sa na to mrknem