Překreslení formuláře po odeslání
- n.u.r.v.
- Člen | 485
Ahoj,
v includované šabloně mám kontaktní formulář (generovaný v presenteru)
a zkouším ho odeslat ajaxově. Formulář se ajaxově odešle a zpracuje, ale
už mi nějak nefunguje překreslení – ve formuláři zůstanou vyplněná
data (nevyresetuje se). Formulář mám obalený v snippet který po odeslání
a zpracování překesluju, ale formulář se po odeslání nevyresetuje a
zůstávají v něm vyplněné odeslané hodnoty.
Dále mám pod formulářem skrytý text potvrzující odeslání, u kterého potřebuji spustit efekt .toggle(„fast“).
Můžete mi prosím poradit jak to udělat? Používám poprvé Naja.js kterou jen ve svém main.js inicializuji pomocí naja.initialize();
V presenteru:
protected function createComponentContactForm() {
$form = new Form();
$form->getElementPrototype()->class = 'ajax';
$form->addText('fullname')
->setHtmlId('fullname')
->setValue('')
->setAttribute('class', 'form-control')
->setRequired('Musíte vyplnit jméno.');
$form->addEmail('email')
->setAttribute('class', 'form-control')//email
->setValue('')
->setRequired('Musíte vyplnit email.');
$form->addText('tel', 'Telefon ')
->setAttribute('class', 'form-control')
->setValue('')
->setRequired(FALSE);
$form->addTextArea("message", NULL, NULL, 3)
->setAttribute('class', 'form-control')
->setValue('')
->setRequired("Musíte napsat sdělení.");
$form->addSubmit('submit_contact', 'Odeslat')
->setAttribute('class', 'btn btn-primary');
$form->onSuccess[] = [$this, 'contactFormSucceeded'];
return $form;
}
public function contactFormSucceeded(Form $form) {
$values = $form->getValues();
//...
if (!$this->isAjax()) {
$this->redirect('this');
} else {
$this->redrawControl('conctactFormBlock');
}
}
formulář v includované šabloně (dole je div s class response, který potřebuji aby se zobrazil po odeslání):
<div class="col-md-7 frm">
{snippet conctactFormBlock}
<div class="shadow-wrapper">
{form contactForm}
<div class="form-control mb-3">
<label for="fullname" class="form-label">Jméno <span class="text-danger">*</span></label>
<p class="invalid-feedback">Zadejte Vaše jméno</p>
{input fullname}
</div>
<div class="form-control mb-3">
<label for="email" class="form-label">Email <span class="text-danger">*</span></label>
<p class="invalid-feedback">Zadejte Váš e-mail</p>
{input email}
</div>
<div class="form-control mb-3">
<label for="tel" class="form-label">Telefon </label>
<input type="text" class="form-control" name="tel" value="">
</div>
<div class="form-control mb-3">
<label for="message" class="form-label">Sdělení <span class="text-danger">*</span></label>
<p class="invalid-feedback">Zadejte obsah sdělení</p>
{input message}
</div>
<div class="text-center"><button class="btn btn-primary" type="submit">Odeslat</button></div>
{/form}
<div class="response"><h3>Vaše zpráva byla úspěšně odeslána.</h3>
<p>Budeme se vašemu požadavku věnovat v nejbližší době</p>
<p><strong>Děkujeme Vám!</strong><br />Tým Proškoly.cz<br /> </p>
</div>
</div>
{/snippet}
</div>
Díky