Nahrání externího .latte do snippetu
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.

- sadamek
 - Člen | 16
 
Dobrý den,
stále se mi nedaří dohledat, jak přes signál, pomocí ajaxu, změnit obsah
snippetu na externí šablonový soubor *.latte . Zkoušel jsem něco sám, ale
nedaří se mi.
Výchozí šablona; V @layout.latte mám script na obsluhu ajaxu i knihovnu.
{extends @layout.latte}
{block content}
<div id="cteniDiv">
    {snippet stranka}
        {block stranka}
            <a class="ajax" n:href="precetl!">Dalsi page</a>
        {/block}
    {/snippet}
</div>
Presenter se signálem
<?php
class TestingPresenter extends SecuredPresenter{
    public function renderDefault(){}
    public function handlePrecetl(){
        if ($this->isAjax())
        {
           $this->template->stranka = $this->template->setFile(APP_DIR.'/templates/page2.latte');
           $this->invalidateControl();
        }
    }
}
Předem děkuji za pomoc

- Jan Endel
 - Člen | 1016
 
Napadá mě, co něco takového?
default.latte:
{extends @layout.latte}
{block content}
{default $page = 'page.latte'}
<div id="cteniDiv">
    {snippet stranka}
        {block stranka}
            {include $page}
        {/block}
    {/snippet}
</div>
page.latte:
<a class="ajax" n:href="precetl!">Dalsi page</a>
page2.latte → tak jak to máš
presenter:
class TestingPresenter extends SecuredPresenter{
    public function renderDefault(){}
    public function handlePrecetl(){
        if ($this->isAjax())
        {
           $this->template->page = 'page2.latte';
           $this->invalidateControl();
        }
    }
}
				
- sadamek
 - Člen | 16
 
Díky,
sice mi nefunguje deklarování proměnné v default.latte pomocí
{default $page = 'page.latte'}
hlásí totiž, že proměnná page neexistuje
Místo toho jsem udělal menší obměnu v includu pomocí makra ifset
<div id="cteniDiv">
    {snippet stranka}
        {block stranka}
            {ifset $page}
                {include $page}
              {else}
                {include page.latte}
            {/ifset}
        {/block}
    {/snippet}
</div>