Vložení dat do prvků formuláře

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

Zdravím, chtěl bych se zeptat, jak (pokud je to vůbec možné) vkládat data například do TextArea.
HTML:

<textarea>Moje data</textarea>

Tohoto bych chtěl docílit v Nette (resp. Latte) avšak nevím jak. Zajímalo by mne také, jak to je u Text a podobně. Děkuji za všechny odpovědi.

JuniorJR
Člen | 181
+
0
-

Na to slouží metoda setDefaultValue($value), viz API

Editoval JuniorJR (18. 5. 2012 19:07)

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Pokud tvoříš formulář pomocí Nette\Forms (což z celého srdce doporučuju, viz patřičná kapitola Dokumentace), dělá se to metodou setDefaultsValue() volanou na daném prvku:

$form->addTextarea('name')
	->setDefaultValue('Moje data');
Grelek
Člen | 233
+
0
-

Ehm, zjistil jsem že mám další problém s tímto.
V latte šabloně vypisuji data tímto způsobem: $blog[$id]->title.
Do těch prvků formuláře potřebuji dostat tím samým způsobem title, content. Navíc když chci zjistit co se děje po odeslání, Nette mi hlásí že AdminPresenter::blogeditpostFormSubmitted() neexistuje, ale to není pravda.

Zde je formulář:

protected function createComponentBlogeditpostForm() {

		$form = new Form();

		$form->addText('title', 'Nadpis:', 40, 255)
			->addRule(Form::FILLED, 'Je nutné zadat nadpis článku.')
			->addRule(Form::MAX_LENGTH, 'Nadpis je příliš dlouhý, maximální délka je 255 znaků.', 255)
			;#Tohle mi nefunguje.. ->setDefaultValue($blog[$id]->title);

		$form->addTextArea('content', 'Obsah článku:')
			->addRule(Form::FILLED, 'Je nutné zadat obsah článku.')
			->addRule(Form::MAX_LENGTH, 'Článek je příliš dlouhý, maximální délka je 10 000 znaků.', 10000);

		$form->addSubmit('post', 'Upravit');
		$form->onSuccess[] = callback($this, 'blogeditpostFormSubmitted');

		return $form;

	}

a zde ona „neexistující“ metoda:

protected function blogeditpostFormSubmitted(Form $form) {

		$this->context->createBlog()->update(array(
				'title' => $form->values->title,
				'content' => $form->values->content
		));
		$this->flashMessage('Příspěvek byl upraven.', 'success');
		$this->redirect('Admin:blog');

	}
JuniorJR
Člen | 181
+
0
-

Ta handle metoda sice existuje, ale „není vidět“. Změň protected function na public function.

Tohle nechápu

$blog[$id]->title

Nikde tam nevidím proměnnou $blog, tak je jasné, že to nemůže fungovat.

Editoval JuniorJR (19. 5. 2012 8:21)