Osetreni duplicity pri insertu do db (MySQL err#1062)
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- suxik
- Člen | 62
Ahoj,
mam-li v databazi napr. v tabulce users nad sloupcem username unique index a
uzivatel se pokusi zaregistrovat pod jmenem, ktere jiz tam existuje, vyhodi se
vyjimka Dibiexception, tu muzu odchytnout a vypsat uzivateli ze username uz
existuje, ale hodnoty formulare se mi mezitim smazou. Jak toto vyresit, aby
zustal vyplneny?
Mám to nějak takto…
<?php
$model = new UsersModel();
try
{
$model->insertUser($values);
}
catch (DibiDriverException $e)
{
if ($e->getCode() == 1062)
{
$this->flashMessage('Uživatelské jméno již existuje!');
}
...
?>
- Ondřej Mirtes
- Člen | 1536
Místo
$this->flashMessage('Uživatelské jméno již existuje!');
dej
$form->addError('Uživatelské jméno již existuje!');
A po té metodě insertUser musíš volat
$this->redirect('this');
(klidně někam jinam), protože se
jedná o změnu stavu
serveru.
Editoval Ondřej Mirtes (3. 3. 2010 21:30)