Formulář – dvě tlačítka onClick
- Prochy
- Člen | 91
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
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
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í
- iskejp
- Člen | 41
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#….