AJAX dialogové okno přes šablonu
- radekBrno
- Člen | 61
Zdravím,
chtěl bych vytvořit dialogové okno přes AJAX. Mám představu, jak to chci udělat, ale nevím, jak to naprogramovat. V šabloně by byl {snippet dialog}{/snippet}. V presenteru bych pak měl událost handleDialog() a v této události, bych rád načetl šablonu a odeslal ji do snippetu. To nevím, jak udělat, poradí někdo a nebo je někde příklad?
Spojení dialogu ze šablony s jQueryUI by neměl být problém. No a případný formulář do šablony také umím vložit.
- radekBrno
- Člen | 61
Jak v handleru načíst šablonu už vím, ale uvedené řešení mi hlásí chybu „Possible problem: you are sending a HTTP header while already having some data in output buffer. Try OutputDebugger or start session earlier.“. Má někdo nějaký nápad?
šablona pro HomepagePresenter
<a class="ajax" n:href="simpleForm!">simpleForm</a>
{snippet simpleForm}{/snippet}
HomepagePresenter
public function handleSimpleForm() {
if ($this->isAjax()) {
$this->template->setFile(__DIR__ . '/template.latte');
$this->template->showSimpleForm = true;
$this->template->render();
$this->invalidateControl('simpleForm');
}
}
template.latte
<p>test</p>
{if isset($showSimpleForm)}{control simpleForm}{/if}
- James_Scott
- Člen | 55
Zkusil bych misto metody handle pouzit metodu render..
Handle by nemelo nic zobrazovat,pouze presmerovat.
- radekBrno
- Člen | 61
Díky za radu. Jediný problém vidím v tom, že obsah dialogového okna se vkládá do zdrojového kódu už při načtení stránky. Pokusil jsem se to trošku upravit.
HomepagePresenter
public function handleSimpleForm() {
if ($this->isAjax()) {
$this->template->displayDialog = true;
$this->template->firstName = "Petr";
$this->redrawControl('simpleForm');
}
}
default.latte
{snippet simpleForm}
{if isset($displayDialog)}{include 'template.latte'}{/if}
{/snippet}
template.latte
<p>Testovací okno</p>
<p>{firstName}</p>
Problém je v tom, že se mi obsah ‚template.latte‘ nezobrazí. Jakmile z template.latte odeberu ‚{firstName}‘ a nechám tam jen čisté HTML, tak vše běží.