Editační formulář se neodesílá
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- lukendo
- Člen | 96
Zdravím, opět mě trápí formuláře. Mám formulář pro přidání a editování záznamu zároveň a při editaci se neodešle, při přidání nového záznamu ano. Pokud id existuje, defaultní hodnoty se nastaví ale metoda pro odeslání prostě ne. Nejhorší na tom asi je, že v jiném presenteru (ale není to na defaultu) tento kód dělá to co má. Děkuji.
public function renderDefault($id)
{
if($id)
{
$userRowSelected = $this->userModel->getRow($id);
if($userRowSelected)
{
$this->template->edit = TRUE;
$this['addNewUserForm']->setDefaults($userRowSelected);
$this['addNewUserForm']->removeComponent($this['addNewUserForm']['groups_id']);
//pokus, ale taky nic
$this['addNewUserForm']->onSuccess[] = [$this, 'AddNewUser'];
$this['addNewUserForm']['send']->caption = "Upravit";
}
else
{
$this->flashMessage('Neplatné url.', 'ui red message');
$this->redirect('default');
}
}
// ... další kód pro default
}
protected function createComponentAddNewUserForm()
{
$control = $this->addNewUserFormFactory->create(function () {});
$control->onSuccess[] = [$this, 'AddNewUser'];
return $control;
}
public function AddNewUser($form)
{
$values = $form->getValues();
$userRowSelected = $this->userModel->getRow($values->id);
if($userRowSelected)
{
try
{
$row = $this->userModel->getRow($values->id);
$row->update($values);
$this->flashMessage('Záznam editován.', 'ui green message');
}
catch(\PDOEXception $ex)
{
$this->flashMessage($ex->getMessage(), 'ui red message');
}
}
else
{
// add
}
$this->redirect('default');
}