formulare – setDefaultValue z databaze

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

Ahoj, snazim se naplnit defaultni hodnotou text input pri editaci polozky. Hodnota se bere z db. Jedine na co jsem zatim prisel je toto, primo v metode createComponent:

<?php
case 'formEditSekce':
$form = new AppForm($this, $name);

	$sql = new Sql;
	$value = $sql->find((int) $this->getParam('id_sekce'),'news_section')->fetch();

$form->addText('nazev', 'Název')
	->setDefaultValue($value->nazev)
	->addRule(Form::FILLED, 'Please enter an název.');
...
?>

kdyz defaultni hodnotu nastavim takto

<?php
->setDefaultValue('hodnota')
?>

tak to funguje. Nejde to pri vypisu z db.

Problem:
funguje ale hazi chybu:
Trying to get property of non-object in..

Jak je bezny zpusob nastaveni ->setDefaultValue pri vypisu z db.

Diky

Editoval Stig (1. 12. 2010 14:54)

Šaman
Člen | 2635
+
0
-

Tak si dumpni proměnnou $sql. Je to objekt? A má public proměnnou nazev? (v případě že $sql je objekt dědící od nette Object by mohl obsahovat metodu getNazev()).

Jestli ne, tak hledej chybu tam. Ještě lépe – načti si z db přímo hodnotu kterou chceš nastavit jako defaultní do proměnné $nazev a až tam spolehlivě bude, tak nastavíš ->setDefaultValue($nazev)

Aurielle
Člen | 1281
+
0
-

Hlavně nepřepisuj metodu createComponent, ale tvorbu formuláře si narvi do createComponentXxx…

Solution
Člen | 50
+
0
-
<?php
$form->addText('nazev', 'Název')
        ->setDefaultValue($value['nazev']);
?>

Počítám, že to je dibi a to defaultně vrací výsledky jako array.

Editoval Padik (1. 12. 2010 17:46)

Stig
Člen | 29
+
0
-

Padik: diky, tam byla ta chyba.