Formulář v komponentě, neodesílá se
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- batko
- Člen | 219
Můj první dotaz. Prosím o radu. Vím, že něco dělám špatně, ale co to nevím. Formulář nemá ACTION a nikam se neodešle a nezpracuje se. Pročetl jsem formum předem i zadem.
Díky moc.
<?php
namespace Todo;
use Nette;
use Nette\Application\UI\Form;
class FormToBasket extends Nette\Application\UI\Control {
public function __construct() {
parent::__construct();
}
public function render() {
$this->template->setFile(__DIR__ . '/FormToBasket.latte');
$form = new Form();
$form->addText("count")
->setValue(1);
$form->addSubmit("submit","ok");
$form->onSuccess[] = $this->insertToBasket;
$this->template->form = $form;
$this->template->render();
}
public function insertToBasket() {
//.....zpracování formuláře
$this->presenter->flashMessage('Zboží bylo vloženo do košíku.', 'success');
$this->redirect('this');
}
}
?>
- Jan Mikeš
- Člen | 771
Toto by ti melo fungovat:
<?php
namespace Todo;
use Nette;
use Nette\Application\UI\Form;
class FormToBasket extends Nette\Application\UI\Control {
public function __construct() {
parent::__construct();
}
public function render() {
$this->template->setFile(__DIR__ . '/FormToBasket.latte');
$this->template->render();
}
public function insertToBasket() {
//.....zpracování formuláře
$this->presenter->flashMessage('Zboží bylo vloženo do košíku.', 'success');
$this->redirect('this'); // Chybi $this->presenter nebo zamer?
}
protected function createComponentBasketForm(){
$form = new Form();
$form->addText("count")->setValue(1);
$form->addSubmit("submit","ok");
$form->onSuccess[] = $this->insertToBasket;
return $form;
}
}
?>
Vykresleni pak v FormToBasket.latte pomoci {control basketForm} nebo pri manualnim renderovani pouzij makro {form basketForm}
Edit: Jedna se skoro o stejne chovani jako u formularu v presenteru, toto by ti mohlo do zacatku pomoci – formular je potreba vytvorit tovarnou, ne jej natvrdo predavat do sablony
Editoval Lexi (18. 3. 2013 23:10)