Rozdílné chování Texy napřímo a přes callback (Helper)

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
maarlin
Člen | 207
+
0
-

Ahoj,
řeším tady už několik hodin, proč nijak nenastavená Texy se chová jinak při přímém volání – přes preview pro Texylu:

class TexylaPresenter extends BasePresenter
{
	/**
	 * Texyla preview
	 */
	public function actionPreview()
	{
		$texy = new Texy;
		$html = $texy->process(NEnvironment::getHttpRequest()->getPost("texy"));
		$this->terminate(new NRenderResponse($html));
	}
}

.. vše funguje jak má.

Ovšem při volání přes callback, jako Helper:

abstract class BasePresenter extends NPresenter
{
    public function beforeRender()
    {
        $texy = new Texy();
        $this->template->registerHelper('texy', callback($texy, 'process'));
}
{block |texy}
    {$content}
{/block}

to funguje tak nějak polovičně…

Z tohoto:

Lorem ipsum
***********

"Google":http://google.com

rutrum dui
==========

vznikne toto:

<p>Lorem ipsum</p>
<hr>
<p>„Google“:<a href="http://google.com">http://google.com</a></p>
<h1>rutrum dui</h1>

Přičemž očekávaný výstup je:

<h2>Lorem ipsum</h2>
<p><a href="http://google.com">Google</a></p>
<h3>rutrum dui</h3>
kravčo
Člen | 721
+
0
-

Problém robí medzera (alebo tabulátor, to je jedno) na začiatku bloku (nie v premennej $content, ale priamo v šablóne v obsahu bloku).

Okrem toho myslím, že jednoduchšie by bolo napísať:

{$content |texy}

pričom tu odsadenie zlobu nenarobí. Alebo, ak to súrne potrebuješ mať uzavreté v anonymnom bloku, skús pridať výkričník (pričom si si vedomý, čo to znamená):

{block |texy}
{!$content}
{/block}

totiž, na zložitejších príkladoch by ti to mohlo hádzať ešte rozdielnejšie výsledky…


Alebo skúsiť niečo takéto (čo ale nemusí byť úplne ekvivalentné):

abstract class BasePresenter extends NPresenter
{
    public function beforeRender()
    {
        $this->template->registerHelper('trim', callback('trim'));
        $this->template->registerHelper('texy', callback(new Texy, 'process'));
    }
}
{block |trim|texy}
    {!$content}
{/block}

Editoval kravčo (4. 10. 2010 13:00)