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
+
0
-

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');
}
CZechBoY
Člen | 3608
+
0
-

přejmenuj renderDefault na actionDefault, je možný, že se hodnoty do formu dostanou pozdě.

lukendo
Člen | 96
+
0
-

pomohlo, děkuji