Formulář – dvě tlačítka onClick

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Prochy
Člen | 91
+
0
-

Zdarvim,
mám vytvořenou továrničku formuláře, a mám tam dvě tlačítka, ale hází mi to chybu.

Argument 1 passed to ClientPresenter::editClientFormSubmitted() must be an instance of Nette\Application\UI\Form, instance of Nette\Forms\Controls\SubmitButton given

Pokud to správně chápu, tak předávám instanci SubmitButtonu a ono to chce instanci Formu, ale nevim jak to mám vyřešit.
Takhle mám tlačítka v továrničce:

$form->addSubmit('createClient', 'Vytvořit')->onClick[] = callback($this, 'newClientFormSubmitted');
$form->addSubmit('editClient', 'Uložit změny')->onClick[] = callback($this, 'editClientFormSubmitted');

Funkce editClient umístěná hned pod továrničkou:

public function editClientFormSubmitted(Form $form)
    {
      $this->klienti->editClient($form->values);
      $this->flashMessage('Klient byl editován.', 'success');
      $this->redirect('this');
    }

Mohu vědět, jak to vyřešit? Počítám s tím, že to bude nějaká banální věc, ale nejsem ji schopen vyřešit sám.

Ot@s
Backer | 476
+
0
-

Použití událostí via onClick[] vrací Nette\Forms\Controls\SubmitButton, tj. stačí upravit

public function editClientFormSubmitted(Nette\Forms\Controls\SubmitButton $btn)
{
      $values = $btn->form->getValues();
      $this->klienti->editClient($values);
      $this->flashMessage('Klient byl editován.', 'success');
      $this->redirect('this');
}
Jan Endel
Člen | 1016
+
0
-

Vždyt ti to píše, uprav svou editClientFormSubmitted na:

public function editClientFormSubmitted(\Nette\Forms\Controls\SubmitButton $button)
    {
	$form = $button->form;

      $this->klienti->editClient($form->values);
      $this->flashMessage('Klient byl editován.', 'success');
      $this->redirect('this');
    }

nebo se koukni do kuchařky jak se dělá formulář který je vytvářecí i editační

Prochy
Člen | 91
+
0
-

Aha děkuji,
jsem myslel, že někde už v tom volání callbacku musim změnit instanci na ten form.

iskejp
Člen | 41
+
0
-

Taky jsem na toto narazil. I když to Laděnka naznačuje, tak by bylo fajn, kdyby se to objevilo v dokumentaci https://doc.nette.org/cs/forms#….