Jak v stringu nahradit Latte makra pred vypisanim?

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

Zdravim, mam tento problem: potrebujem z DB vytiahnut fotky v tvare: src=„{$basePath}/img/…“ a chcem aby sa $basePath nahradil za to za co ma a aby sa mi do kodu nedalo {$basePath}. Skusil som StringTemplate no nechce to ist. Subory vyzeraju takto:

<?php
class StringTemplate extends Nette\Templating\Template
{
        public $content;

        /**
         * Renders template to output.
         * @return void
         */
        public function render()
        {
                $cache = Nette\Environment::getCache('StringTemplate');
                $key = md5($this->content);
                $content = $cache[$key];
                if ($content === NULL) { // not cached
                        if (!$this->getFilters()) {
                                $this->onPrepareFilters($this);
                        }

                        $cache[$key] = $content = $this->compile($this->content);
                }

                $this->__set('template', $this);
                Nette\Utils\LimitedScope::evaluate($content, $this->getParams());
        }
}
?>

a

<?php
class DefaultPresenter extends \BasePresenter
{


    protected $podnadpis;
    protected $content;

    public function handleClick($page) {
        $data = DB::getContent($page);
        $this->podnadpis = $data['h2_tag'];
        $this->content = $data['content'];

        if($this->isAjax()) {
            $this->invalidateControl('content');
            $this->invalidateControl('script');
        }
    }

    public function renderDefault() {
        $this->template->podnadpis = $this->podnadpis;

        $sablona = new \StringTemplate();
        $sablona->presenter = \Nette\Environment::getApplication()->getPresenter();
        $sablona->registerFilter(new \Nette\Latte\Engine);
        $sablona->content = $this->content;

        $this->template->content = $sablona;
    }

}
?>

Debugger ukazuje ze $this->template->content je NULL neviem preco, ked skusim $this->template->content = $sablona->__toString() tak ukazuje ze content je len prazdny string.

skusal som to aj bez StringTemplate nejak takto:

<?php
public function renderDefault() {
        $this->template->podnadpis = $this->podnadpis;
	$parser = new \Nette\Latte\Parser();
	$this->template->content = $parser->parse($this->content);
?>

no to zase vyhadzuje chybu Unknown macro {=} aj ked $this->content obsahuje len „{$basePath}“. nikto nema podobny problem?

Ondřej Mirtes
Člen | 1536
+
0
-

Myslím, že chceš Nette\Latte\Engine a ne Parser.

Ot@s
Backer | 476
+
0
-

Jen pro úplnost – řešení je v tomto vláknu.