Latte šablona vytažená z DB
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- tatyalien
- Člen | 239
Prosím nekamenujte mě, ale jak rozchodit latte filtr na vytažené data z DB? Chtěl bych si uložit do DB defakto celou latte šablonu s formulářema atd… a v textové šabloně měl jen:
{block content}
{$data|template}
{/block}
Procházel jsem fórum a narazil jen na jeden helper, kterej jsem si trochu
upravil, ale skonočí mě to na
chybě: Undefined variable: _control
public function renderDefault()
{
$_this = $this;
$this->template->registerHelper('template', function($text) use ($_this) {
$template = new Nette\Templating\Template();
$template->presenter = $template->control = $_this;
$template->registerFilter(new Nette\Latte\Engine);
$template->setSource($text);
$txt=$template->__toString();
});
$this->template->data = 'Ahoj<br />{control changePasswordForm} tst...';
}
- tatyalien
- Člen | 239
Děkuji, funguje.
$_this = $this;
$this->template->registerHelper('template', function($text) use ($_this) {
$template = new Nette\Templating\Template();
$template->control = $template->_control = $_this;
$template->presenter = $template->_presenter = $_this->getPresenter(FALSE);
$template->registerFilter(new Nette\Latte\Engine);
// dodané proměnné
$template->user = $_this->user;
$template->baseUri = $_this->template->baseUri;
$template->basePath = $_this->template->basePath;
// flash message
$presenter = $_this->getPresenter(FALSE);
if ($presenter->hasFlashSession()) {
$id = $_this->getParameterId('flash');
$template->flashes = $presenter->getFlashSession()->$id;
} else {
$template->flashes = array();
}
$template->setSource($text);
$txt=$template->__toString();
return $txt;
});
Editoval tatyalien (5. 10. 2012 12:51)