Generování komponenty s Texy! syntaxí do bloku proháněném Texy!
- Milanov
- Člen | 51
Ahoj. Mám v DB uložený obsah stránky, který obsahuje vložení externích dat (https://forum.texy.info/…rice-produkt). Šablona komponenty je v Texy! syntaxi, aby když se vygeneruje a vrátí do ostatního obsahu, prošla formátovacím procesem a vykresila mi hezkou tabulku. Ačkoli ostatní text z DB se vykreslí správně zformátovaný, vrácená komponenta je v Texy! syntaxi bez přeformátování. Důvod, proč mám šablonu v Texy! syntaxi je ten, že v generované komponentě potřebuji ošetřit výstupní data také pomocí Texy! a volání Texy! vrámci jiného volání Texy! nelze. Přikládám ukázky kódů. Uměl byste problém někdo vyřešit tak, aby se generovaná komponenta také zformátovala? Díky moc
<?php
function scriptHandler($invocation, $cmd, $args, $raw)
{
switch ($cmd) {
case 'kontakty':
ob_start();
$this['kontakty']->render();
return ob_get_clean();
default: // neumime zpracovat, zavolame dalsi handler v rade
return $invocation->proceed();
}
}
?>
Text v DB:
**Kontakty na nás**
{{kontakty}}
Výsledná stránka:
Kontakty na nás
| Jméno | Příjmení |
| … | … |
- Honza Marek
- Člen | 1664
Pokud to opravdu nutně potřebuješ mít v texy, tak by mohlo pomoct zformátování obsahu novým objektem Texy!!!.
ob_start();
$this['kontakty']->render();
$code = ob_get_clean();
$texy = new Texy;
return $texy->process($code);
- Milanov
- Člen | 51
To vím. Bohužel takto mi padne nastavení původního objektu. Jde mi hlavně o to, že určité informace v tabulce bych chtěl zformátovat pomocí Texy!. Šablona komponenty může být klidně v HTML, ale potom dochází k volání Texy! uvnitř Texy!. Je to takový začarovaný kruh. Proto mi přišlo vhodné použít pro šablonu Texy! syntaxi a přeformátovat to pouze jednou. Bohužel text z vygenerované komponenty se neformátuje a to je můj problém.
- Honza Marek
- Člen | 1664
Milanov napsal(a):
Bohužel takto mi padne nastavení původního objektu.
Vyrob si poděděnou třídu, ve které si Texy nastavíš.
class MyTexy extends Texy {
public function __construct() {
parent::__construct();
$this->headingModule->blabla = ...;
...
}
}
- romansklenar
- Člen | 655
Řeším teďkom podobný problém, jen s tím rozdílem, že z volání
$this['kontakty']->render()
nevracím Texy kód ale vykresluji
nějakou komponentu. Dejme tomu, že výsledkem její funkce render
je takovýto HTML kód:
<h1 class="center">Hello World!</h2>
Problém je ten, že Texy to bere jako data určená ke zpracování a všechno prožene filtrem, takže z toho vznikne toto:
<p><h1 class=„center“>Hello World!</h2></p>
což se samozřejmě v prohlížeči nevykreslí správně :) Už se pár hodin hrabu v Texy metoda pokus omyl, ale nic. Nenapadá někoho jak tomuto předejít?
EDIT: řešení je zde: https://forum.texy.info/…rice-produkt?…