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)