onClick při změně stavu mezi vykreslením a odesláním formuláře

lightteka
Backer | 17
+
0
-

Ahoj,

mám jednoduchý formulář

<?php
class Form
{
	public $onDelete = []

	function createForm()
	{
		$form = new \Nette\Application\UI\Form();

		// nejaka pole

		$form->addSubmit('send');
		$deleteSubmit = $form->addSubmit('delete')
			->setValidationScope(false)

// Tady je zakopany pes
		if (/* je editovany zaznam svazan s jinym zaznamem v db? */) {
			$deleteSubmit->setDisabled()
		}

		$deleteSubmit->onClick[] = function (SubmitButton $button) use ($form) {
            $this->onDelete($form, $button);
        };

		return $form;
	}
}
?>
<?php
class MyComponent
{
	function createComponentForm()
	{
		$control = new Form();
		$form = $control->createForm();

		$form->onSuccess[] = [$this, 'saveItem'];

		// Udalost tridy Form
		$control->onDelete[] = [$this, 'deleteItem']
	}
}
?>

Problem je, ze kdyz nactu formular ve chvili, kdy zaznam neni svazan s jinym, tak je delete tlacitko aktivni. Nez na nej kliknu, nekdo zaznam svaze s jinym, ale ja na tlacitko stale mohu kliknout. Kdyz na nej kliknu, znovu se provede createForm(), ale tentokrat je uz tlacitko neaktivni, takze se nebere v potaz jako isSubmittedBy() a pouzije se akce onSuccess, jako kdybych klikl na send, a formular se pokousi data ukladat. Nezobrazi se pak zprava, ze zaznam nejde smazat protoze je nekde pouzity.

Jde tohle resit na urovni formulare, nebo musim to delete tlacitko deaktivovat rucne pri vykreslovani a z definice formulare to setDisable uplne vyhodit?

Editoval lightteka (29. 1. 2020 1:14)

David Matějka
Moderator | 6445
+
0
-

ahoj, zkusil bych navazat to ulozeni na onClick send buttonu namisto na onSuccess formulare

lightteka
Backer | 17
+
0
-

Diky, za napad.

To mi v pripade, ze jsem klikl na delete tlacitko, ktere se mezi tim nastavilo na neaktivni (zaznam nekdo sparoval s jinym), skoci do onSubmit. Ale v predanem parametru $form nevidim informaci, ze to bylo odeslano delete tlacitkem (coz mi dava smysl).

Formular vykresluju rucne, takze jsem si nakonec do sablony poslal informaci o tom, jestli ma byt tlacitko aktivni nebo ne a z definice formulare to vyhodil.

Diky.