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.nette.org/…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.nette.org/…rice-produkt?…