Texy makro zřejmě nefunguje
- Bulldog
- Člen | 110
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?
- David Grudl
- Nette Core | 8218
Je možné, že to nefunguje, jsi nejspíš první na světě kdo to použil :)
- Bulldog
- Člen | 110
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
- David Grudl
- Nette Core | 8218
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));