Nefunguje odesílání formuláře
- zuhla
- Člen | 33
Dobrý den, omlouvám se předem jestli to bude nějaká kravina, ale snažím se na to dojít a furt nic. Už sjem vyzkoušel i jiné kódy, ale furt to samé.
Mám Adminmodul a v něm formulář, který získá data pro editaci a pak jich odešle. Ale když kliknu na tlačítko odeslat, tak se nic nestane, formulář se ani nehne, jen se to znovu načte a to je vše.
Používám Nette 2.0 Beta a PHP 5.3. Poprvé dělám na PHP 5.3, tak se omlouvám, pokud to bude úplná blbost :(
public function actionEdittext($id) {
$edit = \Pages::findText($id);
$this->template->edit = $edit;
$this['createEditForm']->setDefaults($edit);
}
public function createComponentCreateEditForm($name)
{
$editform = new \Nette\Application\UI\Form($this, $name);
$editform->addHidden('id');
$editform->addText('title', 'Titulek');
$editform->addTextArea('text','Text')
->addRule(\Nette\Application\UI\Form::FILLED, 'Musíte vyplnit text článku');
$editform->addSubmit('sendedit','Odeslat');
$editform->onSuccess[] = callback($this, 'sendedit');
return $editform;
}
public function sendedit($editform)
{
$text = $editform['text']->getValue();
$name = $editform['title']->getValue();
$id = $editform['id']->getValue();
News::editText($id, $text, $name);
$this->flashMessage('Editace proběhla úspěšně.');
$this->redirect('edit');
}
Díky za odpověď ;)
Editoval zuhla (29. 11. 2011 18:17)
- zuhla
- Člen | 33
pilec napsal(a):
A jak ho vykresluješ?
Vykresluji to přes {widget createEditForm}
JuniorJR napsal(a):
Říkáš, že po kliknutí se nic nestane, ale vzápětí píšeš, „že se to znovu načte“. Tak jak to tedy myslíš?
<ot>
$this->template->edit = $edit;
přesuň do adekvátní render metody</ot>
Nestane se nic, takovým způsobem, že se ani nesnaží udělat nic z funkce sendedit. Prostě se stránka jen obnoví, nic se needituje.
- bojovyletoun
- Člen | 667
tak si to nějak odkrokuj (argumenty pages::edit a news::edit a co jde z formuláře především) a debuguj (stačí dump hodnot nebo xdebug). Pár poznámek:
- opravdu je správně nahoře Pages a dole News?
- na začátku funkce sendedit můžeš použít třeba toto pro
zpřehlednění:
$v=$form->values;$id=$v->id;$text=$v->text;