Pri extendovaní layoutu nefunguje ajax

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

Zdravím,
ak pošlem ajaxový request na ľubovoľnú stránku, ktorá má layout, ktorý extenduje z iného (hlavného) layoutu, tak takáto stránka vypíše výnimku: Missing template file 'G:\test\document_root/../app/templates/ExampleModule/1'..

templates/@layout.phtml:

<?php
<html>
{block #head}...{/block}
{block #body}...{block #content}...{/block}{/block}
</html>
?>

templates/ExampleModule/@layout.phtml:

<?php
{extends "../@layout.phtml"}
{block #body}....{/block}
?>

Pri bežný požiadavkách toto funguje normálne, ale akonáhle pošlem na stránku požiadavku s hlavičkou X-Requested-With: XMLHttpRequest (čiže ajaxový request) vypíše to túto výnimku.

Myslím, že chyba bude vo vyrenderovanej šablóne, pretože je v nej toto:

<?php
/* ... */
$_cb->extends = TRUE;
/* ... */
if (SnippetHelper::$outputAllowed) {
  if (!($_cb->extends = "../@layout.phtml")) throw new Exception("Empty destination in {extends}")
}
/* ... */
if ($_cb->extends) {ob_end_clean();
// v prvom parametri je očakávaný názov súboru, ale namiesto toho je tam TRUE
$template->subTemplate($_cb->extends, get_defined_vars())->render();  }
?>

Ide o bug, alebo robím niekde chybu ja?

Vďaka.

Editoval timbulko (7. 7. 2009 15:13)

timbulko
Člen | 85
+
0
-

Nevedel by mi niekto poradiť, čo s tým? Dík.

PaBi3
Bronze Partner | 62
+
0
-

Keďže zatiaľ neexistuje dokumentácia k novým šablónam, tak zostáva iba experimentovať alebo sa hrabať v zdrojákoch.

Ja som niečo skúšal a ajax som normálne rozbehal na revízii 398 (PHP 5.3). Použil som pred extends zavináč, teda niečo na takýto spôsob.

/@layout.phtml

...
@{include #content}
...

/Products/default.phtml

@{extends ../@layout.phtml}
...
{block #content}
	{control blabla}
{/block}
...

Či je to správny postup (napriek tomu, že je funkčný) je teraz skoro zisťovať. Počkám na dokumentáciu.

timbulko
Člen | 85
+
0
-

Dík, to je presne ono! :-) Chcelo to ten zavináč pred {extends} + zavináče pred {block} a {/block}.

Ondřej Mirtes
Člen | 1536
+
0
-

BTW: Já doufám, že „nové šablony“ jsou udělané tak, že tam zavináče vůbec nebudou potřeba :)

Honza Marek
Člen | 1664
+
0
-

Teprve budou. V těch nových šablonách zatím nejsou snippety oficiálně podporovány.

David Grudl
Nette Core | 8218
+
0
-

Bude to bez zavináčů, ale zatím není.