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

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

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

Ripper
Člen | 56
+
0
-

Super, díky moc :)