Formulář v samostatné třídě
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Dawe3081
- Člen | 2
Ahoj mám formulář umístěný v /app/forms/AccountCreateForm.php
<?php
use Nette\Application\UI\Form,
Nette\ComponentModel\IContainer;
class AccountCreateForm extends Form{
public function __construct(IContainer $parent = NULL, $name = NULL) {
parent::__construct($parent, $name);
$this->addText('accountName', 'Název herního účtu: ')
->addRule(FORM::FILLED, 'Zadejte prosím název herního účtu.');
$this->addPassword('password', 'Heslo: ')
->addRule(FORM::FILLED, 'Zadejte prosím heslo.');
$this->addPassword('password2', 'Heslo znovu: ')
->addRule(FORM::FILLED, 'Zadejte prosím heslo znovu pro kontrolu.');
$this->addText('email', 'E-mail: ')
->addRule(FORM::FILLED, 'Zadejte prosím e-mail.')
->addRule(FORM::EMAIL);
$this->addSubmit('create', 'Vytvořit účet');
$this->onSuccess[] = $this->accountCreateSucceeded();
}
public function accountCreateSucceeded()
{
//$this->flashMessage('Herní účet byl založen.', 'success');
//$this->redirect('this');
$this->presenter->redirect('this');
}
}
?>
V presenteru mám
<?php
protected function createComponentAccountCreateForm()
{
$form = new AccountCreateForm();
return $form;
}
?>
A to skončí chybou:
Nette\InvalidStateException
Component '' is not attached to ‚Nette\Application\UI\Presenter‘.
Co s tím? Díky za odpověď.
- David Matějka
- Moderator | 6445
mas tam
$this->onSuccess[] = $this->accountCreateSucceeded();
takze to tu metodu zavola, pokud to chces jako callback, musis
$this->onSuccess[] = $this->accountCreateSucceeded;
jinak neni doporucovano dedeni Form, lepsi je treba si na to udelat tovarnicku