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
+
0
-

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.

David Matějka
Moderator | 6445
+
0
-

formular pouzivas spatne, viz https://doc.nette.org/cs/forms#…

buksy
Člen | 22
+
0
-

Nerozumiem, musim mat „protected function createComponentSignInForm()“ z ktorej vratim vytvoreny formular? Ja viem ze to bdue nieco trivialne, ale fakt mi to nemysli aj ked som to precital…

David Matějka
Moderator | 6445
+
0
-
buksy
Člen | 22
+
0
-

Aha, tak uz som pochopil ze som to mal cele zle :D … dakujem :)