Zpracování formuláře pomocí AJAXu
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Dogtown
- Člen | 4
Zdravím, s Nette teprve začínám a potřebuji udělat formulář, kde po kliknutí na tlačítko se mi pomocí AJAXu překreslí data. V tomto případě jen na zkoušku to, že se mi data vymažou, tedy dá se tam prázdné pole.
Vygenerování stránky v presenteru:
<?php
public function renderList(){
if(!$this->isAjax()){
$this->template->advertisements = $this->adv->getAll();
}
?>
V presenteru mám formulář:
<?php
protected function createComponentAdvForm(){
$form = new Form;
$form->getElementPrototype()->class('ajax');
$form->addText('searchAdv', 'Vyhledat')
->setAttribute('style', 'style="padding-left: 5px; display: inline-block;')
->setAttribute('size', '20');
$form->addSubmit('search', 'Vyhledat');
$form->onSuccess[] = $this->advFormSucceeded;
return $form;
}
?>
Obslužná metoda pro formulář:
<?php
public function advFormSucceeded($form, $values)
{
$this->template->advertisements = array();
$this->redrawControl();
}
?>
Obsah latte souboru:
{snippet advsList}
{foreach $advertisements as $adv}
<div class="articlewindow">
<a n:href="Advertisement:detail $adv->id"><h1>{$adv->name}</h1></a>
</div>
{/foreach}
{/snippet}
Používám nette.ajax.js, kde v layoutu volám metodu init:
<script>
$(function () {
$.nette.init();
});
</script>
Díval jsem se i na ostatní příspěvky s podobným tématem, ale nikde jsem nenašel nějakou odpověď. Ani se nezavolá ta obslužná metoda advFormSucceeded.
- David Matějka
- Moderator | 6445
vytvaris Nette\Application\UI\Form
? (a nikoliv jen
Nette\Forms\Form
)?