Zpracování dat – dvě pole z jednoho formuláře

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

Zdravím,
potřeboval bych vyřešit problém, při kterém po odeslání formuláře zapíši část dat vždy do tabulky „A“ a pokud hodnota jednoho pole bude „Y“, tak zbylá data zapíši do tabulky „B“. Formulář obsahuje také data, která zpracuji, ale do databáze neukládám. Takže data z formuláře se dají rozdělit na 3 části (tabulka A, tabulka B, zpracování).

Pokud použiji příkaz:

$row = $this->database->table(self::TABLE)->insert($values);

Tak mám všechny data z formuláře v jednom poli a Tracy mi samozřejmě vrátí chybu s neexistujícím sloupcem v DB.

Tímto bych se chtěl zeptat, je možné, aby mi formulář vrátil rovnou 3 pole? Je možné to nějak nadefinovat? Nebo není jiná možnost než pole $values zpracovat (rozdělit) až po odeslání?

Mohl bych to těď udělat že bych do každého insertu nadefinoval konrétní proměnné, ale toto řešení se mi krajně nelíbí.

Moc děkuju za rady :)

F.Vesely
Člen | 369
+
0
-

Pridej si tam 3 kontejnery a ve $values pak budes mit 3 pole.

Croc
Člen | 270
+
0
-

Super, to jsem trubka že jsem to nenašel :P Zítra vyzkouším :-) Díky moc

Croc
Člen | 270
+
0
-

V akci presenteru se snažím naplnit formulář defaultníma hodnotma, ale nejde mi to. Problém je, že ve formuláři mám 3 kontejnery.

Klasický formulář (bez kontejnerů) mi plnit jde a plním ho takto:

public function actionForm()
{
    $row = $this->itemManager->getItemData()->fetch();
    if(!$row){
        $this->error('Item nebyl nalezen');
    }
    $this['itemForm']->setDefaults($row);
}

Nevíte jak plnit formulář kde mám 3 kontejnery? Díky moc

David Matějka
Moderator | 6445
+
0
-

Kazdy container tam posles jako pole:

->setDefaults(array(
	'container1' => array(
		'foo' => 'bar',
		...,
	),
	...
);
Croc
Člen | 270
+
0
-

Aha, to mě nenapadlo. Už to jede. Díky moc