Oznámení
Reprezentace něčeho v TexyHtml jako řetězec
před 12 lety
- littlemaple
- Člen | 60
Strávil jsem hodně času zkoumáním všeho možného, ale už asi rezignuji.
Využívám rozšíření {{něco}}
. Funkce na takové
rozšíření napojená může vracet řetězec nebo TexyHtml objekt.
V případě, že je to zpracováváno Texy! jak má, je vše v pořádku.
Pokud ale nechci výstup z rozšíření cachovat, je třeba tento postup:
zakomentuji {{neco}}
na <!--{{neco}}-->
,
převedu, cachuji a potom odchytávám takovéto komentáře a nahrazuji za
výstup z funkce pro rozšíření. Ale! Když vrátí TexyHtml, co
s tím?
Objekt TexyHtml, na rozdíl od NHtml nemá rozumné rozhraní pro svou
textovou reprezentaci, takže nedisponuje žádným __toString()
apod. a metody, které jsem v něm našel (toText
,
toHtml
) fungují dost divně a vyhazují mi místo řetězce
warningy.
Třeba
$el = TexyHtml::el('strong')->setText('Ну, погоди!');
echo $el->toHtml($this->texy);
bez šance (Warning: preg_replace() [function.preg-replace]: Empty regular expression in …\class\texy.php on line 809). Texy2! PHP 5. Nějaké tipy? :)
Editoval littlemaple (11. 1. 2008 18:28)
před 12 lety
- David Grudl
- Nette Core | 6806
Objekty TexyHtml nereprezentují konečnou podobu výstupního textu, ale pouze mezistupeň. Proto tam není žádné __toString() a metody toText a toHtml jsou určeny pro interní použití.
Protože parametr $texy předávaný toHtml() musí být „nastartovaný“ (tj. ve probíhajícím převodu), je možné převod na řetězec udělat během volání handleru.
před 12 lety
- Gringo
- Člen | 32
Pokud to chápu dobře, při načítání z cache už to přes Texy! neprochází, čili nejdou použít handlery, je tak?
před 12 lety
- littlemaple
- Člen | 60
Mnooo, tak jest :) . Takže jediný způsob jak to vyřešit je vyprdnout se
na TexyHtml, muset to tvořit ručně jako řetězec HTML, následně
propašovat do Texy! přes protect()
a v případě, že to jde
z cache, tak pouhým nahrazením? Škoda :/ .
To abych si pak otrocky hrál s věcmi jako nastavení XHTML/HTML a podle
něj skládal ručně buď <tagy>
nebo
<tagy />
, nemluvě o jiných nastaveních :( .
před 12 lety
- David Grudl
- Nette Core | 6806
Zkusím se na to podívat, ale nebude to hned.
před 12 lety
- littlemaple
- Člen | 60
Už mám skoro po zkouškovém, je nějaký postup? ;)
před 12 lety
- David Grudl
- Nette Core | 6806
snad během února, ale nic neslibuju
před 12 lety
- littlemaple
- Člen | 60
Napadlo mě, že bych to mohl v plužínu poskládat pomocí NHtml a pokud by se výsledek necachoval, bude normálně převeden do řetězce. Pokud se cachuje a má být zpracován Texy!, možná by šlo nějak udělat z NHtml objektu TexyHtml… Kdo ví :) .
Nebo potom ještě TexyHtml vůbec nepoužívat a dělat to jen v NHtml, Texy! předávat zásadně jen výsledné HTML z plužínu jako řetězec. Což by znamenalo nakonfigurovat NHtml tak, aby vracelo vždy stejně formátovaný výstup jako právě nastavené Texy!
- je to prvotní nápad, nezkoumal jsem to vůbec
- možná by bylo hloupé mít ve „frameworku“ 2 věci, které dělají skoro totéž (NHtml, TexyHtml)
Budu o tom ještě přemýšlet a zkoumat to. Jen jsem to sem napsal, abych zaznamenal své úvahy :) .
Editoval littlemaple (30. 1. 2008 23:27)