Jak vyrenderovat šablonu i s makry

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

Zdravím, upgraduju CMS z verze 2.0 beta na 2.0.10 a nemůžu přijít na to, jak vyrenderovat šablonu včetně maker.

Mám třídu StringTemplate, která dědí z Nette\Templating\Template. Ta má vlastní atribut $content a metodu render:

public function render()
        {
                $this->setSource($this->content);

                $cache = new Nette\Caching\Cache($storage = $this->getCacheStorage(), 'StringTemplate');
		$key = md5($this->content);
                $cached = $compiled = $cache->load($key);

                if ($compiled === NULL) { // not cached
			$compiled = $this->compile();
			$cache->save($key, $compiled, array(Nette\Caching\Cache::CONSTS => 'Nette\Framework::REVISION'));
			$cached = $cache->load($key);
		}

                $this->__set('template', $this);

		if ($cached !== NULL && $storage instanceof Caching\Storages\PhpFileStorage) {
			Nette\Utils\LimitedScope::load($cached['file'], $this->getParameters());
		} else {
			Nette\Utils\LimitedScope::evaluate($compiled, $this->getParameters());
		}
        }

V kódu, kde používám StringTemplate, mám tohle:

	$template = new StringTemplate();
$template->presenter = Nette\Environment::getApplication()->getPresenter();
$template->registerFilter(new \Nette\Latte\Engine);
$template->setSource($html);
$html = $template->__toString();

Problém je v tom, že __toString() vrací prázdný řetězec. Napadá někoho, v čem může být chyba?

(Pokud jde o Environment, vím, že je deprecated a mám v plánu ho nahradit hned, jak to pojede.)

chikeet
Člen | 160
+
0
-

Nakonec to byla úplně primitivní chyba. Stačilo z metody render odstranit řádek

$this->setSource($this->content);

protože v kódu, kde používám StringTemplate, už atribut content nepoužívám a tak byl logicky prázdný.
Řádek

$this->__set('template', $this);

se ukázal jako zbytečný, takže taky pryč, odstranila jsem atribut content, aby byl úklid kompletní, a už to funguje.

(Někdy je fakt nejlepší se na to vyspat :-))