Nekorektní zápis dat z formu
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- symmetry
- Člen | 71
Zdravím, do formuláře náčítám dta z db a po odeslání formu je updatem upravuji.
Problém je v tom, že pokud do formu cokoliv zapíši, po odeslání se mi uloží původní hodnota a ne hodnota nová.
Netuší někdo prosím, v čem by mohl býti problém?
Viz:
<?php
$id_of_seminar = $_GET["id"];
$user = new Users();
$user->AccessProtect();
$result = dibi::query('SELECT * FROM [tbl_seminars] WHERE [id] = %i',$id_of_seminar);
$all = $result->fetch();
$form = new Form;
$form->addProtection('Rozpoznán pokus o CSRF útok');
$form->addGroup('Editace semináře');
$form->addText('nazev', 'Název semináře:')
->addRule(Form::FILLED, 'Vložte název semináře')
->setValue($all->seminar_name);
$form->addText('start', 'Datum začátku:')
->addRule(Form::FILLED, 'Vložte datum začátku semináře')
->setValue($all->date_of_start);
$form->addText('end', 'Datum konce:')
->addRule(Form::FILLED, 'Vložte datum konce semináře')
->setValue($all->date_of_end);
$form->addText('place', 'Místo konání:')
->addRule(Form::FILLED, 'Vložte místo konání semináře')
->setValue($all->place);
$form->addTextArea('content', 'Informace o semináři:')
->addRule(Form::FILLED, 'Vložte informace o semináři')
->setValue($all->content);
$form->addFile('attachment','Příloha k semináři');
$select_values = array(0 => "Neschvaleno",1=> "Schvaleno");
$form->addSelect('is_allowed','Je článek schválen',$select_values);
//->setValue($all->is_allowed);
$form->addSubmit('send', 'Odeslat');
//End of form
if($form ->isSubmitted()&&$form ->isValid())
{
//Get all values in array
$values = $form->getValues();
//Get separately values from form
$name = $values['nazev'];
$start = $values['start'];
$end = $values['end'];
$place = $values['place'];
$content = $values['content'];
$attachment= $values['attachment']->getName();
$is_allowed= $values['is_allowed'];
//Try upload file
if(!empty($attachment))
{
if($values['attachment']->isOk())
$values['attachment']->move('files/'.$attachment);
}
//Save form values to the DB
$articles = new Articles();
if($articles->UpdateOldSeminar($id_of_seminar,$name,$start,$end,$place,$content,$attachment,$is_allowed))
{echo "<div id=\"warning_mess\">Úprava článku proběhla bez problémů</div>";}
else
{echo "<div id=\"warning_mess\">Úprava článku se nezdařila</div>";}
}
//Display form
echo $form;
?>
- Filip Procházka
- Moderator | 4668
Vidím že používáš setValue
a možná i
setValues
, taky jsem se nedávno napálil, na tohle se použív
metoda setDefaults
.
$defaults = array(
'email' => "@",
'zeme' => "cs"
);
$form->setDefaults($defaults);
zhruba takhle :)