Vložení dat do prvků formuláře
- Grelek
- Člen | 233
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.
- Vojtěch Dobeš
- Gold Partner | 1316
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
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');
}