Stránky v databázi – escapování proměnných

- minzo
 - Člen | 23
 
Ahoj.
Chtěl bych vás poprosit o radu.
Do databáze jsem si uložil obsah stránek, které se po zadání jejich url
zobrazí.
Problém však nastává , když stránka obsahuje např:
{$this->context->parameters["wwwDir"]}
Zajímá mne, jestli a jak se vůbec dá udělat, aby se vypsal obsah tohoto příkladu? Nyní se mi to totiž vypisuje jen jako text.
PS: „Magický“ ! v šabloně používám ;)
Editoval minzo (14. 4. 2012 22:30)

- Jan Endel
 - Člen | 1016
 
Bude zapotřebí výstup z databáze ještě prohnat přes templating v Nette, jak na to de dočtěš v dokumentaci
Editoval pilec (14. 4. 2012 23:18)

- minzo
 - Člen | 23
 
ViPEr*CZ: V DB mám uloženou stránku, které obsahuje
n:makra, ale i normální, případně $user data…
Potřebuji je v presenteru „převést“ na jejich hodnotu. Místo
{$user->identity->nick} mít Minzo a poté je
pomocí $this->template->content předat do templatu, kde
stím ještě pracuji.
Snad už je to lépe napsané ;)

- Jan Endel
 - Člen | 1016
 
To co potřebuješ se často řeší v posílání emailů a v dokumentaci je to krásně popsané. Zkus to podle toho. Akorát teda nepoužiješ FileTemplate ale jen Template a nad objektem Template zavoláš setSource(…).
Editoval pilec (15. 4. 2012 14:03)

- Jan Endel
 - Člen | 1016
 
Trošku jsem si zalaboroval, ale toto řešení mi funguje:
default.latte:
{block content}
<h1>Domovská stránka</h1>
{$hello}
{$test}
HomePresenter.php:
class HomePresenter extends BasePresenter
{
    public function renderDefault()
    {
        $this->template->hello = "hello";
        $template = $this->createTemplate('Nette\Templating\Template');
        $template->setSource('{$hello2}');
        $template->hello2 = "hello - funguje";
        $this->template->test = $template;
    }
}
a výstup je očekáváný:
Domovská stránka
hello hello - funguje
				
- minzo
 - Člen | 23
 
Tak jsem testoval a přišel jsem na to, kde je problém.
V BasePresenter mám:
protected function createTemplate($class = NULL)
{
	$template = parent::createTemplate();
	$template->registerHelper("timeAgoInWords", "\Latte\Helpers::timeAgoInWords");
	$template->registerHelper("texy", callback(new \Utils\MyTexy($this->context->parameters), "process"));
	return $template;
}
Pokud to smažu, tak to funguje tak, jak má.
Jenže tim pádem nastává druhý problém. Jak zaregistrovat tyto Helpery?
Editoval minzo (15. 4. 2012 20:59)