Texy makro zřejmě nefunguje

Bulldog
Člen | 110
+
-1
-

Ahoj, nainstaloval jsem si Texy, protože jsem jí chtěl konečně dát šanci.

Chtěl jsem to odzkoušet se vším všudy a ejhle. Když zaregistruju Texy makro:

(new Texy\Bridges\Latte\TexyMacro($engine, new Texy\Texy()))->install();

a pak v šabloně použiju

{texy}{="ahoj jak je"}{/texy}

tak se mi vypíše reálně toto jako text, takže toto je co vidí uživatel…:

<?php echo LR\Filters::escapeHtmlText(„ahoj jak je“) /* line 5 */; ?>

a to jako WTF? Myslel jsem, že to makro se bude chovat stejně jako když bych volal $texy->process("ahoj jak je")

Kde je prosím problém?

Bulldog
Člen | 110
+
-9
-

Tak to jsem tedy nečekal, že nikdo nebude umět s výchozím TexyMakrem pro Latte

David Grudl
Nette Core | 8082
+
+3
-

Je možné, že to nefunguje, jsi nejspíš první na světě kdo to použil :)

Bulldog
Člen | 110
+
0
-

Rozumím, že je spousta věcí, které někdo napíše, neuchytí se a zmizí v propadlišti skriptovacích dějin.
Nicméně když jsem hledal nějaké NetteXTexy integrace na netu, tak jsem našel například tuto, nebo tuto a co jsem pochopil, obě Texy makro do Latte zavádějí.

A vzhledem k tomu, že ty knihovny museli autoři taky odzkoušet, tak mi přijde divné, že by na tohle nenarazili…

  • mají ty knihvny docela dost stažení, tak se mi nechce věřit, že ani jeden z těch 13k lidí nezkusil použít i makro…

Ale ok beru na vědomí, že je to slepá ulička, kterou se nemám vydávat. Díky za upozornění.
Jenom prosím o upřesnění: Má smysl používat texy? Ať se s tím neprdím zbytečně :D

Michalek
Člen | 209
+
+1
-

No, já to nemám přes makro, ale přes filtr… Není to lepší?

{$var|texy}

Bulldog
Člen | 110
+
0
-

@Michalek Filtr je samozřejmost. Jenom jsem chtěl mít zaregistrované i to makro, když už existuje :) Nevadí používat ho tedy nebudu. Jen mě to zmátlo :)

David Grudl
Nette Core | 8082
+
+4
-

Přidal jsem do distribuce demo na TexyMacro pro Latte 2 https://github.com/…/latte2.phpt, ale má to dost omezení, proto rozhodně doporučuju updatovat na Latte 3, pro které jsem vytvořil taky rozšíření, které je mnohem šikovnější https://github.com/…/latte3.phpt.

Pokud je mezi značkami {texy}....{/texy} statický text, tak ho to přeloží už během kompilace šablony a výsledek do ní uloží. Pokud je obsah dynamický (tj. jsou uvnitř Latte značky), Texy konverze se provádí pokaždé při vykreslování šablony.

Pokud je žádoucí Latte značky uvnitř vypnout, dá se to udělat takto {texy}{syntax off}....{/syntax}{/texy}.

Instalace je jednoduchá:

$texy = new Texy\Texy;
$latte = new Latte\Engine;
$latte->addExtension(new Texy\Bridges\Latte\TexyExtension($texy));

Do rozšíření lze kromě objektu Texy předat také vlastní callback, pak je možné předávat a zpracovávat parametry, jako třeba:

{texy locale: en, heading: 3}
...
{/texy}
$fn = function (string $text, int $heading = 1, string $locale = 'cs'): string {
	$texy = new Texy\Texy;
	$texy->headingModule->top = $heading;
	$texy->typographyModule->locale = $locale;
	return $texy->process($text);
};

$latte = new Latte\Engine;
$latte->addExtension(new Texy\Bridges\Latte\TexyExtension($fn));

Viz https://phpfashion.com/…exy-do-latte