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

- maarlin
 - Člen | 207
 
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
 
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)