Formular, OnValidate funkcia nie je volana
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- buksy
- Člen | 22
Ahojte, mohli by ste mi prosim poradit preci mi moj formular nefunguje? :/
Mam takyto presenter
<?php
namespace App\Presenters;
use Nette,
App\Model;
use Nette\Forms\Form; // koli addRule(Form::PATTERN,...)
use Nette\Application\UI;
/**
* Homepage presenter.
*/
class ThirdPresenter extends UI\Presenter
{
public function renderDefault($type)
{
$form = new UI\Form;
$form->setMethod('post');
$form->onValidate[] = array($this, 'validateForm');
$form->addHidden('type', $type);
$form->addText('firstname', 'Meno:')->SetRequired('Vyplňte meno');
$form->addText('lastname', 'Priezvisko:')->SetRequired('Vyplňte priezvisko');
$form->addText('birth', 'Dátum narodenia (dd.mm.rrrr):', 'test')
->SetDefaultValue('1.1.1990')
->SetRequired('Vyplňte dátum narodenia')
->addRule(Form::PATTERN, 'Dátum musi byť vo formáte dd.mm.rrrr!', '[0-9]{1,2}.[0-9]{1,2}.[0-9]{4}');
$form->addSubmit('send', 'Registrovat');
$this->template->form = $form;
}
public function validateForm(UI\Form $form)
{
echo("TEEEST");
}
}
Toto je default.latte
{block content}
<h1>3. Krok</h1>
{control $form}
{/block}
Bohuzial, metoda validateForm() nie je nikdy volana. Dokonca, formular je po odoslani prazdny. Ked ale pouzijem Nette\Forms\Form namiesto Nette\Application\UI\Form tak je formular po odoslani znova vyplneni (ale k validacii aj tak nedojde). Cez $this->request->getPost() vidim odoslane data.