komponenta v textu z databáze
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- David Matějka
- Moderator | 6445
asi takhle:
$presenter = $this;
$text = preg_replace_callback('~///(\w+)///~', function($matches) use($presenter) {
ob_start();
$presenter->getComponent($matches[1])->render();
return ob_get_clean();
}, $text);
- batko
- Člen | 219
matej21 napsal(a):
asi takhle:
$presenter = $this; $text = preg_replace_callback('~///(\w+)///~', function($matches) use($presenter) { ob_start(); $presenter->getComponent($matches[1])->render(); return ob_get_clean(); }, $text);
uf :-) děkuji za nástřel, jdu to zkusit, ale jsem z toh na první pohled nemoudrý :-)
- David Matějka
- Moderator | 6445
„nic nedela“ znamena co? neupravi to ten text? zkusil jsem to a funguje mi to bez problemu. dej to do nejaky render* metody v presenteru a uprav tim ten text, cos vybral z databaze
Editoval matej21 (21. 3. 2014 16:42)
- batko
- Člen | 219
bohužel to nic nevypíše a nic se nestane
basepresenter:
<?php
protected function startup() {
parent::startup();
$this->template->registerHelper('components', function ($text) {
$presenter = $this;
$text = preg_replace_callback('~///(\w+)///~', function($matches) use($presenter) {
ob_start();
$presenter->getComponent($matches[1])->render();
return ob_get_clean();
}, $text);
});
}
?>
pagepresenter
<?php
function renderDetail() {
$this->template->a = "text ///menu/// text";
}
?>
latte
<?php
{$a|components}
?>
- jiri.pudil
- Nette Blogger | 1029
Helper musí vrátit transformovaný výstup. Tzn. místo
$text = preg_replace_callback(...
má být
return preg_replace_callback(...
Editoval jiri.pudil (22. 3. 2014 9:25)