Chyba při vytváření formuláře – Cannot read an undeclared property onSuccess
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Ripper
- Člen | 56
Zdravím všechny,
zkoušel jsem „vícemístné“ formuláře, dle tohoto postupu. Nicméně to vyhazuje následující chybu – „Cannot read an undeclared property RegistrationForm::$onSuccess“.
Interface
interface IRegistrationForm
{
/**
* @return RegistrationForm
*/
function create();
}
RegistrationForm.php
/**
* Registration form
*
* Class RegistrationForm
*/
class RegistrationForm extends BaseForm // extenduje od UI\Control
{
/**
* @return Nette\Application\UI\Form
*/
protected function createComponentForm()
{
$form = new Nette\Application\UI\Form();
$form->addText('test');
$form->addSubmit("send", "Odeslat");
$form->onSuccess[] = $this->formSucceeded;
return $form;
}
/**
* @param Nette\Application\UI\Form $form
*/
public function formSucceeded(Nette\Application\UI\Form $form)
{
}
}
Presenter
/**
* @var IRegistrationForm @inject
*/
public $registrationForm;
/**
* @return RegistrationForm
*/
protected function createComponentRegistrationForm()
{
$form = $this->registrationForm->create();
$form->onSuccess[] = function (Nette\Application\UI\Form $form) {
if (!$form->isValid()) return;
$this->redirect('this');
};
return $form;
}
Díky za navedení, nikde jsem o tom nic nenašel.
Editoval Ripper (13. 5. 2014 21:02)
- David Matějka
- Moderator | 6445
v te prvni verzi navodu byla chybka, mrkni na aktualni, konkretne na
$control['form']->onSuccess[] = function (UI\Form $form) {
...
Nebo si muzes v komponente definovat vlastni event, ktery budes volat po zpracovani formu