Zachycení a změna výstupu před vykreslením
- Elijen
- Člen | 171
Nejlepší by to podle mě bylo neprovádět. Na co to potřebuješ? :)
Případně lze využít vlastní filtr:
// filtr, který nahradí v textu šablony slova 'apple' slovem 'pizza'
$template->registerFilter(function ($s) {
return str_replace('apple', 'pizza', $s);
});
Editoval Elijen (30. 8. 2012 14:44)
- Ot@s
- Backer | 476
Doufám, že k tomu máš pádný důvod. :-) Interně (přes Nette) by to byla zhovadilost (postrádám důvod, když vše mohu ovlivnit přes šablony) a externě třeba pomocí knihovny SimplehtmlDOM
$html = file_get_contents('http://www.mujserver.cz/presenter/akce/nette');
$dom = str_get_html($html);
$dom->find('title', 0)->innertext = "Moje nove title";
echo $dom;
Editoval Ot@s (30. 8. 2012 14:43)
- onny
- Člen | 67
Děkuji, s touto možnosí jsem obeznámen, myslel jsem, že by to šlo „interně“ pomocí třeba shutdown a response, dříve něco takového bylo možné. Jinak jsem si vědom toho, co zkouším :))
Ot@s napsal(a):
Doufám, že k tomu máš pádný důvod. :-) Interně (přes Nette) by to byla zhovadilost (postrádám důvod, když vše mohu ovlivnit přes šablony) a externě třeba pomocí knihovny SimplehtmlDOM
$html = file_get_contents('http://www.mujserver.cz/presenter/akce/nette'); $dom = str_get_html($html); $dom->find('title', 0)->innertext = "Moje nove title";
- Ot@s
- Backer | 476
Tak to určitě víš, že co se týče šablon, tak vše pro změnu obsahu
v šabloně musíš znát do (včetně) beforeRender()
. Pokud
máš třeba samostatné pluginy (=objekty), které rozšiřují funkčnost
aplikace, tak máš několik způsobů, jak zjistit potřebné výstupy (třeba)
do hlavního layoutu (typicky zpětné ovlivnění obsahu <head>).
Namátkově bych v těchto objektech využil anotace (třeba
/** @importCSS css/article.css */
) nebo bych pomocí interface
„pluginům“ vnutil metodu, která bude vracet potřebné závislosti do
jádra aplikace ještě před renderováním.
Editoval Ot@s (30. 8. 2012 14:54)