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 | 8218
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.info
[* image.jpg *]
{/block}
Označný blok s modifikátorem texy
je pak předhozen helperu
texy
.
- David Grudl
- Nette Core | 8218
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.info
[* 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.