$form->getValues() potrebuji aby vratilo pole
- Melmen
- Člen | 132
Ahojte,
Předem se omlouvám jestli jsem ve špatném fóru,jenže dotaz se týká formuláře, databáze a zároveň jsem začátečník :D Ale zpět k dotazu:
Používám Nette, NotORM a ModelLoader od Srigiho (Diggriola), vše aktuální z GitHubu.
Výběr dat mi funguje na výbornou, jen mám problém s insertem.
Vytvořím např registrační formulář v FrontModule/UserPresenter :
function createComponentRegistrationForm()
{
$form = new \Nette\Application\UI\Form;
$form->addText('nickname', 'Uživatelské jméno:');
................................
$form->addSubmit('submit', 'Registrovat');
$form->onSuccess[] = callback($this, 'RegistrationFormSubmitted');
return $form;
}
A následně chci data uložit do databáze, kde použiji zhruba toto:
$data = $form->getValues();
$this->getModel('UsersModel)->insert($data);
Jenže to mi háže chybu:
Recoverable Error
Argument 1 passed to Diggriola\BaseModel::insert() must be an array, object given, called in /var/www/localhost/htdocs/PhpProject1/app/FrontModule/presenteres/UserPresenter.php on line 38 and defined
A BaseModel obsahuje tuto fci:
public function insert(array $data)
{
return $this->connection->{$this->tableName}()->insert($data);
}
Někde jsem četl něco o přetypování objektu na pole, ale vůbec nevím
co a jak..
Mockrát díky všem za ochotu ;)
- Melmen
- Člen | 132
Jo máš recht, když jsem dumpnul $data , vrátilo mi to Nette\ArrayHash a teď to vrací Array.
Ale co čert nechtěl, vyskytl se další problém..
Laděnka mi hodí chybu:
PDOException #23000
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '0' for key 'PRIMARY'
For key PRIMARAY… není to něco s primárním klíčem?? Protože v tabulce mám primární klíč id, ale proměnná $data neobsahuje žádnou informaci o id v tabulce..
//EDIT Děkuju :)
Editoval Melmen (30. 9. 2011 19:05)
- Jan Voráček
- Člen | 90
Jestli se jedná o MySQL, nemáš nejspíš na sloupci id nastavenou vlastnost auto_increment.
Editoval Jan Voráček (30. 9. 2011 19:09)