načtení dat v presenteru a odesílání formuláře?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
vk83
Člen | 22
+
0
-

Zdravím,
chtěl bych se zeptat jestli tohle je normální chování nebo je někde chyba?

Napřed ještě uvedu, že v bootstrap.php mám nastaveno Debug::$strictMode = TRUE;

Třída MujPresenter definuje formulář s jedním checkboxem, který je po načtení stránky dostupný (není disabled) a když odešlu formulář tak se mi objeví chyba, že proměnná toho checkboxu neexistuje.

Pomůže celý ten kód z renderDefault přesunout do createComponentFormTest1 nebo zrušit „->setDisabled(true)“ toho checkboxu na řádku, který jsem označil /1/

Napadlo mě jestli není špatně to, že načítám ty hodnoty z DB do proměnné v rendereru a s nimi ve formuláři pracuji.
Jinak ty hodnoty se mi z DB načtou a ve formuláři zobrazí, ale nejde to odeslat, když je to udělané takhle.

Proč to tedy nejde?

class MujPresenter extends BasePresenter {
	private $tx;

	public function renderDefault($id) {
		$nacitani = new NacitaniDB();
		$tx = $nacitani->nactiData1($id);
		$this->tx = $tx;
	}

	protected function createComponentFormTest1() {
		$id = $this->getParam('id');
		$tx = $this->tx;

		$form = new AppForm;

		if ($id != -1) {
			$form->addText('tr1', 'TR1', 80, 120)
				->setValue($tx['infoText']);

			if ($tx['infoDatum'] == NULL) {
				$form->addCheckbox('tr2', 'TR2 / DISABLED')
					->setValue(false)
					->setDisabled(true); /*1*/
			} else {
				$form->addCheckbox('tr2', 'TR2')
					->setValue(false);
			}
		} else {
			$form->addText('trText', 'Nadpis', 80, 120);

			$form->addCheckbox('tr2', 'TR2 / DISABLED')
				->setValue(false)
				->setDisabled(true);
		}

		$form->addSubmit('sbm', 'Uložit');

		$form->onSubmit[] = callback($this, 'formZprac');
		return $form;
	}

	public function formZprac(AppForm $form) {
		$values = $form->getValues();
		echo $values['tr2'];
	}
}

Formulář je jenom takhle:

{control $form begin}
<div>
	<div>
		<h1>{$control['formTest1']['tr1']->label}</h1>
		<div>{$control['formTest1']['tr1']->control}</div>
	</div>

	<div>
		{$control['formTest1']['tr2']->control}
		{$control['formTest1']['tr2']->label}
	</div>
	{$control['formTest1']['sbm']->control}

</div>

{control $form end}