Invalidace formulare po odeslani jineho formulare

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

Zdravím a prosím o radu:

mam v edit.latte dva formulare. Jeden odesilam ajaxove a po jeho odeslani bych potreboval aktualizovat hodnoty formulare, který je pod nim… tedy

v presenteru mam tedy toto, coz me naplni formular, který potrebuji později aktualizovat

public function renderEdit() {
	....
        $this['contractsForm']->setDefaults($this->context->contractsModel->getDataById($this->getParam('id'))->fetch());
	....
}

ten formular mam umisten v sablone:

	{snippet test}
            {control contractsForm}
	{/snippet}

a ted ten formular, který mam v modalu a odesilam ajaxove:
v presenteru:

function formSubmit($form) {

	// provedu nejaky prepocet
	$this->context->contractsModel->recountContract($this->getParam('id'));
	// a timto opet potrebuji naplnit form
	$this['contractsForm']->setValues($this->context->contractsModel->getDataById($this->getParam('id'))->fetch());

	$this->invalidateControl('test');

    }

no a přitom pokusu o naplneni, resp. znovunačtení hodnost formulare me to pise v setValues:

First parameter must be an array, boolean given.

Netusite, jak na to prosim?
Jakoby activeRow se nedala volat znovu?

David Matějka
Moderator | 6445
+
0
-

predpokladam, ze je to proto, ze
$this->context->contractsModel->getDataById($this->getParam('id'))->fetch() vrati false (neboli ze zaznam neexistuje. Co je v parametru ID? predava se spravne?

MW
Člen | 626
+
0
-

Trochu se ztracim .. v renderEdit to vraci vysledek, id je persistent a je v url .. podle krokovani tam je spravne id. Nemuze se to ztratit diky tomu, ze je to volane ajaxove ? Diky !

MW
Člen | 626
+
0
-

Pokud udelam dublikovanou metodu v modelu getDataById2(), tak to jde… něco me unika… :-)
Vysvetlil by někdo, prosim?

Diky!

David Matějka
Moderator | 6445
+
0
-

ukaz, jak vypada ta metoda

MW
Člen | 626
+
0
-

nejprve:

__construct($database) {
	$this->data = $this->database->table('tabulka');
}

pak

getDataById() {
	return $this->data->where('id', $id);
}

no a musim toto.. nemuzu se znovu odvolat na getDataById() resp. asi na $this->data …

getDataById2() {
	return $this->database->table('contracts')->where('id', $id);
}

blbě jsem se vyjadřil.. nejedna se o zduplikovani, ale jen musim pristoupit takto k datum… asi me jen unika, co presne udela ->fetch() .. nebo?

Editoval MW (17. 4. 2015 12:25)

David Matějka
Moderator | 6445
+
+2
-

@MW selection nepouzivej pro vic dotazu, vzdy si vytvarej nove pomoci ->table(...). Ony se v tom hromadeji vsechny podminky apod. Selection je vlastne jeden dotaz – ne zadna modelova vrstva

MW
Člen | 626
+
0
-

OK, dekuji.