Formulář v komponentě

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
baal
Člen | 34
+
0
-

Zdravím,

vytvořil jsem si komponentu menu (potomek control), renderuju v ní 3 menu, z toho 1 je loginForm. Snažím se zpracovat formulář, ale stále se nedaří.

class Menu extends Control {

    public function renderLogin() {
        $form = new AppForm;
        $form->addText('username', 'Uživatel:')
            ->addRule(Form::FILLED, 'Vyplňte prosím uživatelské jméno.');
        $form->addPassword('password', 'Heslo:')
            ->addRule(Form::FILLED, 'Vyplňte prosím heslo.');
        $form->addSubmit('login', 'Přihlásit');
        $form->onSubmit[] = array($this, 'handleLogin');

        $template = $this->createTemplate();
        $template->registerFilter(new CurlyBracketsFilter);
        $template->setFile(APP_DIR . '/templates/MenuLogin.phtml');
        $template->form = $form;
        $template->render();
    }

    public function renderMenu1() {
        $template = $this->createTemplate();
        $template->registerFilter(new CurlyBracketsFilter);
        $template->setFile(APP_DIR . '/templates/Menu1.phtml');
        $template->render();
    }

    public function renderMenu2() {
        $template = $this->createTemplate();
        $template->registerFilter(new CurlyBracketsFilter);
        $template->setFile(APP_DIR . '/templates/Menu2.phtml');
        $template->render();
    }

    public function handleLogin(AppForm $form) {
        debug::dump($form);
    }

}

V BasePresenteru pak komponentu vytvořím pomocí

public function createComponentMenu() {
        return new Menu;
    }

A v layoutu následně

{control menu:Login}
{control menu:Menu1}
{control menu:Menu2}

Formulář nedostane žádnou action. Kde mám tedy chybu? Předem děkuji.

vlki
Člen | 218
+
0
-

To samé znovu a znovu. Formulář není připojen ke stromu komponent v okamžiku, kdy dojde ke zpracování parametrů. Řešením je použití továrniček i v komponentách…!

K přečtení:
https://doc.nette.org/…ubleshooting
https://doc.nette.org/…n/presenters#…