ajax formular po odeslani reset formulare (vymazani)

dehtak
Člen | 113
+
0
-

Zdravim,
jak vymazat formular po odeslani ajaxem ?
Po odelaslani mi zustane text v polich

Tohle nefunguje

protected function createComponentMailForm(): Form{
        $form = new Form;
        $form->getElementPrototype()->class('ajax');
		$form->addText('name','Name');
		$form->addEmail('email', 'E-mail');
    	$form->addTextArea('zprava', 'Zprava');
	    $form->addSubmit('send', 'Odeslat');

		$form->onSuccess[] = [$this, 'MessageSend'];
		return $form;
}

public function MessageSend(Form $form, \stdClass $values): void{
 $form->setValues([], True);
}

     <form n:name=mailForm>
      <div class="row">
        <div class="col-sm-6 form-group">
          <input class="form-control" id="name" n:name=name placeholder="Name" type="text" required>
        </div>
        <div class="col-sm-6 form-group">
          <input class="form-control" id="email" n:name=email placeholder="Email"  value="" type="email" required>
        </div>
      </div>
      <textarea class="form-control" id="comments" n:name=zprava placeholder="Zprava"  value="" rows="5"></textarea><br>
      <div class="row">
        <div class="col-sm-12 form-group">
          <button class="btn btn-default pull-right ajax" type="submit">Odeslat</button>
        </div>
      </div>
        </form>

Editoval dehtak (19. 6. 2020 13:39)

dakur
Člen | 493
+
0
-

@dehtak Potřebuješ snippety. Viz dokumentace. Na <form> navěsíš n:snippet="nazev" (definuješ obsah k překreslování při AJAX requestu) a po $form->setValues(...) zavoláš ještě $this->redrawControl('nazev') (řekneš, že tohle chceš překreslit).

Editoval dakur (19. 6. 2020 14:08)

dehtak
Člen | 113
+
0
-

asi takhle ?

 <form n:name=mailForm n:snippet="clearform">
</form>
   public function MessageSend(Form $form, \stdClass $values): void{

      if ($this->isAjax()) {
           $form->setValues([], true);
           $this->redrawControl('clearform');
      }
        bdump($values);
    }

To je stejny nic to nedela

MajklNajt
Člen | 471
+
+1
-

@dehtak na reset formulára sa používať $form->reset()

EDIT: a nie som si istý, či snippet je vhodné pridávať práve na form element, ten má svoje ID po vyrenderovaní, skôr by som to obalil do <div n:snippet="nazov">...form...</div>

Editoval MajklNajt (19. 6. 2020 15:50)

dehtak
Člen | 113
+
0
-

Aha diky moc uz to funguje, ja to mel taky v includovane sablone, podle manualu sem zjistil ze se inludovana sablona musi dat do snippetArey.