Pri extendovaní layoutu nefunguje ajax
- timbulko
- Člen | 85
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)
- PaBi3
- Bronze Partner | 62
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.
- Ondřej Mirtes
- Člen | 1536
BTW: Já doufám, že „nové šablony“ jsou udělané tak, že tam zavináče vůbec nebudou potřeba :)
- Honza Marek
- Člen | 1664
Teprve budou. V těch nových šablonách zatím nejsou snippety oficiálně podporovány.