Jak následující kód přepsat do Nette 2.0.5? onClick

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

V Nette 2.0.4 mi toto fungovalo:

protected function createComponentRegistrationSubmitForm()
{
    $form = new Form();
    $form->addSubmit('ok', 'Ano')
            ->onClick[] = callback($this, 'okSubmitted');

    $form->addSubmit('no', 'Ne')
            ->onClick[] = callback($this, 'noSubmitted');
    return $form;
}

public function okSubmitted( \Nette\Forms\Controls\SubmitButton $button )
{
    $this->redirect('Homepage:default');
}

public function noSubmitted( \Nette\Forms\Controls\SubmitButton $button )
{
    $this->redirect('Homepage:super');
}

Pokoušel jsem se takto ale stále nefunguje :(

protected function createComponentRegistrationSubmitForm()
{
    $form = new Form();
    $form->addSubmit('ok', 'Ano')
            ->onClick[] = $this->okSubmitted;

    $form->addSubmit('no', 'Ne')
            ->onClick[] = $this->noSubmitted;
    return $form;
}

public function okSubmitted( \Nette\Forms\Controls\SubmitButton $button )
{
    $this->redirect('Homepage:default');
}

public function noSubmitted( \Nette\Forms\Controls\SubmitButton $button )
{
    $this->redirect('Homepage:super');
}
22
Člen | 1478
+
0
-

a jak se to projevuje, že to nefunguje, mně se to jeví v pořádku na první pohled..

motorcb
Člen | 551
+
0
-

22 napsal(a):

Zmeni se adresa: page?do=actionSubmitForm-submit

Ale k přesměrování nedojde…

22
Člen | 1478
+
0
-

nauč se používat use a použij správný namespace pro formuláře Nette\Application\UI\Form

motorcb
Člen | 551
+
0
-

22 napsal(a):

Prosím o detailnější vysvětlení/nakopnutí :)

22
Člen | 1478
+
0
-

Máš new Form(), ale není jasné, z jakého namespace ho vytváříš, před třidoiu by jsi měl mít ještě use Nette\Application\UI\Form

motorcb
Člen | 551
+
0
-

22 napsal(a):

To tam mám…

<?php
use Nette\Mail\Message;
use Nette\Application\UI\Form;
use Nette\Image;
use Nette\Utils\Html;
use Nette\Utils\Validators;

class PagePresenter extends BasePresenter {
...
22
Člen | 1478
+
0
-

Tak máš problém někde jinde, protože jsem tvůj kod teď hodil do presenteru a normálně funguje, takže hledej problém někde jinde.. $this->redirect() třeba v renderDefault() ti funguje?

Editoval 22 (14. 9. 2012 22:25)

duke
Člen | 650
+
0
-

Pokud mu to ve verzi 2.0.4 fungovalo, tak to problém s namespacem být nemůže.

motorcb napsal:

Změní se adresa: page?do=actionSubmitForm-submit

Tady bude zakopaný pes, neboť správné url by mělo vypadat:

page?do=registrationSubmitForm-submit

Patrně máš tedy chybu v šabloně, kde máš {control actionSubmitForm} místo {control registrationSubmitForm} nebo podobnou nepřesnost. Proč se ti to začlo projevovat až po upgrade na novou verzi Nette ale netuším. Spíš si myslím, že sis tam tu chybu zanesl nezávisle na tom (patrně když ses rozhodl komponentu přejmenovat).

Editoval duke (14. 9. 2012 22:27)

22
Člen | 1478
+
0
-

to máš pravdu, že ta URL, co uvádí, neodpovídá tomu, co by se mělo podle kodu z 1. příspěvku vygenerovat.

motorcb
Člen | 551
+
0
-

Díky za nápady. Opravdu v novém FW to funguje.
Problém byl v následujícím JS kódu, který omezuje vícenásobné odeslání formuláře.

$(document).ready(function()
{
    $("form").submit(function() {
        var el = $(this).find(":submit, :image");
        el.attr("disabled", "disabled");
        setTimeout(function() {
                el.attr("disabled", "");
        }, 5000);
    });

});

Nevěděl by někdo jak to opravit?

MartyIX
Člen | 217
+
0
-

Zkusil bych toto:

$(document).ready(function()
{
    $("form").submit(function() {
        var el = $(this).find(":submit, :image");
        el.attr("disabled", "disabled");
        setTimeout(function() {
                el.removeAttr("disabled"); // <- CHANGED LINE
        }, 5000);
    });

});

HTH

motorcb
Člen | 551
+
0
-

MartyIX napsal(a):

Bohužel, pořád nefunguje :(
Problém dělá řádek:

el.attr("disabled", "disabled");
MartyIX
Člen | 217
+
0
-

A jakou chybu Ti hlásí Chrome Developer nebo Firebug?

motorcb
Člen | 551
+
0
-

MartyIX napsal(a):

Chabu žádnou, jen se nevykoná funkce po onClick