Nepřenesení property objektu do události?
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Ondřej Mirtes
- Člen | 1536
Po celodenním nettění jsem narazil na zajímavou chybu (anebo tu svoji už zkrátka nevidím):
public function editText($id) {
$this->renderMode = "editText";
$row = $this->model->getTextToEdit($id);
//zde jsou normálně naplněné proměnné, echnou se, zkrátka kód proběhne
$this->id = $id;
$this->text = $row->text;
$this->format = $row->format;
$this->time = $row->time;
$this->userId = $row->user_id;
$this->revision = $row->revision;
}
Jenže v tom samém kódu, ve chvíli, kdy se v editText echnou požadované hodnoty, tak v následujícím kódu se v tom samém průběhu stejného skriptu vyskytnou zde už jen samé NULLy:
public function onEditFormSubmit(Form $form) {
if ($form->isValid())
{
$values = $form->getValues();
try {
$this->model->editText($this->id /* zde je NULL */, $values["text"], $values["summary"], $values["revision"]);
}
catch (Exception $e) {
$form->addError($e->getMessage());
}
if (!$form->hasErrors()) {
$this->format = ""; //unsetting
$this->redirect('this');
}
}
}
EDIT: Jasně, volají se v opačném pořadí :)) Jak je zavolat v takovém, jaký zamýšlím?
Editoval LastHunter (11. 4. 2009 0:26)
- Ondřej Mirtes
- Člen | 1536
Už jsme na to kápli – editText musím volat v jiné fázi
prezenteru – před handlingem :)
Proč není třeba kontrolovat validitu v té události?