Zprovoznění filtru texyElements

- romansklenar
- Člen | 655
Zdravíčko, chci se zeptat, jestli je už dokončen filtr texyElements a dá se normálně používat ( viz příspěvek ).
U filtru curlyBrackets funguje konstrukce
{block texy} ... {/block} normálně, pokud v presenteru předám
šabloně Texy:
// $this je např. BasePresenter a jsme metodě třeba beforeRender()
$this->template->texy = new Texy();
což je logické žejo, ale u filtru texyElements vidím jako
problém to, že netuším jak předat třídě TemplateFilters (
nebo statickému registru TemplateFilters:: ) proměnnou
s inicializovaným Texy tak, aby to pak při vykonávání metody
texyCb() nezařvalo při vykonávání
převodu
return self::$texy->process($m[2]);
// toto z prispevku vyse neni zase syntaxycky spravne
return new Texy()->process($m[2]);
Call to a member function process() on a non-object in ...
Zkoušel jsem i z repozitáře
/tests/Templates/test.texyElements.php ale taky nic co by mě
dovedlo k výsledku.
Zatím jsem si konec metody texyCb() upravil,
aby to neřvalo
$texy = new Texy();
return $texy->process($m[2]);
což sice funguje, ale nedá mi to spát :-) protože určitě na to je nějaká fintička jak tam tu proměnnou dostat, takže se ptám jestli někdo neví jak na to a nezodpoví i druhou část tohoto příspěvku.

- romansklenar
- Člen | 655
Díky :-) po nějaké chvilce zkoušení jsem se k tomu dopracoval, jak už bývá skoro zvykem když člověk nad něčím stráví nějakou dobu a napíše do fóra, v zápětí je u cíle :-D …

- David Grudl
- Nette Core | 8285
Tohle je velmi raná verze filtru texyElements, používat jej nedoporučuju.
Oficiální podporovaná cesta je třeba tato:
$texy = new Texy;
$template->registerFilter(/*Nette\Templates\*/'CurlyBracketsFilter::invoke');
$template->registerHelper('texy', array($texy, 'process'));
šablona:
{block |texy}
Vítejte!
--------
Můžete používat syntax Texy!, pokud Vám vyhovuje:
- třeba **tučné** písmo nebo *kurzíva*
- a takto se dělá "odkaz":https://texy.nette.org
[* image.jpg *]
{/block}
Označný blok s modifikátorem texy je pak předhozen helperu
texy.

- David Grudl
- Nette Core | 8285
Pro pochopení: {block} … {/block} vygeneruje něco cca takového:
<?php ob_start() ?>
Vítejte!
--------
Můžete používat syntax Texy!, pokud Vám vyhovuje:
- třeba **tučné** písmo nebo *kurzíva*
- a takto se dělá "odkaz":https://texy.nette.org
[* image.jpg *]
<?php echo $template->texy(ob_get_clean()) ?>
A $template->texy(...) je volání helperu texy,
tj. volání callbacku array($texy, 'process').

- edke
- Člen | 198
David Grudl wrote:
Tohle je velmi raná verze filtru texyElements, používat jej nedoporučuju.
Oficiální podporovaná cesta je třeba tato:
$texy = new Texy; $template->registerFilter(/*Nette\Templates\*/'CurlyBracketsFilter::invoke'); $template->registerHelper('texy', array($texy, 'process'));
Hm, tomu rozumiem, ked inicializujem takto Texy priamo vo view, ktoreho sablona obsahuje {block | texy}, tak to vsetko pekne funguje.
Len som potom skusal zadefinovat helper v BasePresenter-i v startup() tak,
aby som mohol texy uz potom pouzivat kdekolvek a to sa mi nepodarilo. Pri
callbacku z TemplateFilters.php $texy->process() nie je
dostupne.