Renderovanie html kódu v parametri a dedičnosť
- JakubH
- Člen | 13
Zdravím,
Je možné renderovať html kód bez použitia filtru noescape?
Skúšal som niekoľko riešení ale ani jedno nefungovalo na 100%. Snažím sa
dosiahnuť renderovanie obsahu z databázy. Aj zároveň dedičnosť funkcií,
ktoré budú predom definované.
$this->latte_parameters = array(
'title' => $lang["list"]["title"],
'content' => '<b>Túčný text<b>',
);
$this->latte->render('clanok.latte', $this->latte_parameters);
Html kód v parametri, ktorý obsahuje funkciu.
$this->latte_parameters = array(
'title' => $lang["list"]["title"],
'content' => '<b>Túčný text{funkcia(1)}</b>',
);
$this->latte->render('clanok.latte', $this->latte_parameters);
Snažím sa naprogramovať vlastné CMS, ktoré bude používať Latte a bude zobrazovať obsah navyše ak tak bude definované pri vytrvaní stránky (napr.: článok).
Používame len Latte 2.7 s Utils.
Ďakujem vopred za odpoveď :)
- David Grudl
- Nette Core | 8199
Na HTML bez noescape jde použít
'content' => new Latte\Runtime\Html('<b>Túčný text</b>')
.
Pokud tam má být i Latte, tak je potřeba proměnnou nejprve vyrenderovat
přes Latte.
- JakubH
- Člen | 13
Ďakujem za radu ohľadom Latte\Runtime\Html
Funguje to presne podľa mojich predstáv.
Teraz sa tam snažím dať aj spomínané funkcie:
$this->latte->addFunction('clanok', function ($test) {
$latte_parameters = array(
'content' => new Latte\Runtime\Html('<b>Toto je článok: '.$test.'</b>')
);
$this->latte->render('article.latte', $latte_parameters);
});
$this->latte_parameters = array(
'title' => $page["title"],
'content' => new Latte\Runtime\Html('<h1>Túčný text</h1>{clanok(1)}')
);
$this->latte->render('page.latte', $this->latte_parameters);
Len nikde som nenašiel vyrenderovanie premennej. Ani moje pokusy nefungovali.
Ak by ste mi vedeli poradiť aj ohľadom tohto bude veľmi vďačný.
Ďakujem vopred za odpoveď :)
- David Grudl
- Nette Core | 8199
Myslím že to půjde jen nějak takto
$latteString = clone $this->latte;
$latteString->setLoader(new Latte\Loaders\StringLoader);
$this->latte_parameters = array(
'title' => $page["title"],
'content' => new Latte\Runtime\Html($latteString->renderToString('<h1>Túčný text</h1>{clanok(1)}'))
);
$this->latte->render('page.latte', $this->latte_parameters);