Nette form nepošle signál
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- jashin
- Člen | 34
Vytvářám formulář přes Nette Forms (jeden input jeden submit):
Factory:
<?php
$form = new Form();
$form->addText('test', 'Test');
$form->addSubmit('send');
$form->onSuccess[] = function(Form $form) {
throw new \Exception('Test');
};
return $form;
?>
Presenter:
<?php
protected function createComponentFilter() {
return $this->tagFilterComponent->create();
}
?>
Latte:
<?php
{block leftContent}
{control filter}
{/block}
?>
Formulář se normálně vykreslí. Po kliknutí na tlačítko se odešle,
ale onSuccess
se neprovolá. Když se podívám na ten request tak
se odešle jako POST. Jsou v něm data z „test“ inputu, ale
signál žádný.
V čem je problém?
Edit:
Teď jsem si všiml, že form nemá ani action.
Editoval jashin (29. 4. 2017 10:40)
- Pix
- Člen | 5
Ahoj,
mám podobný problém jako kolega výše – onSuccess se nezavolá a místo toho opět proběhne renderDetail()
use Nette\Application\UI\Form;
public function renderDetail($id)
{
$proposal = $this->proposals->find($id);
if (!$proposal) {
$this->error('Návrh nebyl nalezen');
}
$this->template->proposal = $proposal;
$this->template->comments = $proposal->getComments();
}
protected function createComponentCommentForm()
{
$form = new Form;
$form->addText('name', 'Jméno:');
$form->addSubmit('submit', 'Odeslat');
$form->onSuccess[] = [$this, 'commentFormSucceeded'];
return $form;
}
public function commentFormSucceeded(Form $form, $values)
{
$this->redirect('Homepage:');
}
Editoval Pix (12. 6. 2017 8:33)