onClick[] na formulari nefunguje, preco? prosim pomoc

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

Ahoj,

Mam komponentu signInForm kde chcem mat dolu dve tlacidka, 1 ⇒ login 2⇒ register
Jednym sa submitne signInForm a prihlasi uzivatela a druhe by som chcel aby presmerovalo na Register:default presenter. Problem je ze sa mi nespustia metody ktore definujem na onClick[] tlacidiel..

Fakt sa param s tym celu noc, preliezol som cele forum a skusal som vsetko, prosim help..

headers

use Nette\Application\UI\Control as Control;
use Nette\Application\UI\Form as Form;

class SignInForm extends Control :

function __construct($user) {
        parent::__construct();
        $this->user = $user;
    }


protected function createComponentSignInForm() {
        $form = new Form();
        $form->getElementPrototype()->class('login');


        $form->addText('username', 'Uživatelské jméno:', 15, 30)
                ->getControlPrototype()->class('inputs');

        $form->addPassword('password', 'Heslo:', 15)
                ->getControlPrototype()->class('inputs');

        $form->addCheckbox('persistent', 'Pamatovat si mě na tomto počítači');
        $form->addSubmit('login', 'login')
                ->getControlPrototype()->class('loginButton')
                ->onClick[] = $this->skuska;
        $form->addSubmit('register', 'register')
                ->getControlPrototype()->class('registerButton')
                ->onClick[] = $this->skuska1;
Nette\Diagnostics\Debugger::barDump($form->isValid(),'valid');

//        $form->onSuccess[] = $this->signInFormSubmitted;
        return $form;
    }

public function skuska(SubmitButton $button) {
        Nette\Diagnostics\Debugger::barDump($form,'skuska');
    }

    public function skuska1(SubmitButton $button) {
        Nette\Diagnostics\Debugger::barDump($form);
    }

BasePresenter :

protected function createComponentSignInForm() {
        $control = new SignInForm($this->user);
        return $control;
    }

V dokumentaci sa pise ze sa onClick provede iba ked je form validni, toz validni je ..debuger hlasi true.
Skusal som rozne zapisy na volane metody zavesene na onClick[] :

->onClick[] = array($this,‚skuska‘);
->onClick[] = callback($this,‚skuska‘);
->onClick[] = $this->skuska;

Ziadna mi nejde :(, stranka sa obnovi ale nic sa nestane, prosim help ..uz neviem co ..preliezol som vsetko, viac krat sa to tu riesilo ale mne nic nepomohlo a uz neviem co

skuskove metody su len docasne ..stejne ale sa nezavolaju v bardumpe sa neobjavi odchytene submitButton

(otazka mimo : staci potom v metode redirectRegister zavolat $this->presenter->redirect(Register:default) ??)

Velmi pekne dakujem

Oli
Člen | 1215
+
0
-

Zkousel jsi i onSubmit?

jiri.pudil
Nette Blogger | 1032
+
0
-

Vždyť ten onclick nenavěšuješ na tlačítko jako takové, ale na jeho controlPrototype (tedy Nette\Utils\Html). Zkus takhle:

$button = $form->addSubmit('login', 'login')
	->onClick[] = $this->skuska;
$button->getControlPrototype()->class('loginButton')
azicko
Člen | 7
+
0
-

jiri.pudil napsal(a):

Vždyť ten onclick nenavěšuješ na tlačítko jako takové, ale na jeho controlPrototype (tedy Nette\Utils\Html). Zkus takhle:

$button = $form->addSubmit('login', 'login')
	->onClick[] = $this->skuska;
$button->getControlPrototype()->class('loginButton')

vau ! dakujem ti velmi pekne :) vobec by ma toto nenapadlo ..

Diky velke !