U login formuláře v base presenteru, vykresleného v layoutu se neprovede on success

deleted
Člen | 61
+
0
-

Ahoj,

už si nevím rady. Mám v base presenteru login formulář

    public function createComponentSignInForm()
    {
        $form = new Form();
        $form->setTranslator($this->translator);
        $form->getElementPrototype()->class('ajax');

        $form->addText("email")
            ->setRequired()
            ->setHtmlAttribute("placeholder", $this->translator->translate("common.emailPlaceholder"))
            ->setHtmlAttribute("class", "login-input-name")
            ;

        $form->addPassword("password")
            ->setRequired()
            ->setHtmlAttribute("placeholder", $this->translator->translate("common.passwordPlaceholder"))
            ->setHtmlAttribute("class", "login-input-password")
            ;

        $form->addCheckbox("stayLoggedIn")
            ->setHtmlAttribute("class", "login-checkbox")
            ;

        $form->addSubmit("login")
            ->setHtmlAttribute("class", "login-button")
            ;

        $form->addSubmit("resetPassword")
            ->setHtmlAttribute("class", "login-button")
            ;

        $form->onSuccess[] = [$this, "login"];

        return $form;
    }

    public function login($form, $values)
    {
        bdump("On success vyvolán!");
        $values = $form->getValues();

        if ($values["stayLoggedIn"]) {
            $this->user->setExpiration('30 minutes');
        } else {
            $this->user->setExpiration('14 days');
        }

        $this->user->login($values["email"], $values["password"]);

        if($this->presenter->isAjax()) {
            $this->presenter->redrawControl("headerSnippet");
        } else {
            $this->presenter->redirect("this");
        }

        $this->redrawControl("headerSnippet");
    }
        {form signInForm}
            <div class="login">
                <div class="login-close"><i class="fas fa-times"></i>Zavřít</div>
                <div class="login-box">
                    <div class="login-title">Přihlášení</div>
                    <form autocomplete="off">
                        {input email}
                        {input password}
                        <div class="login-checkbox-wrapper">
                            {input stayLoggedIn}
                            <div class="checkbox-text">Zůstat přihlášený</div>
                        </div>
                        <button type="submit" n:name="login"><i class="fas fa-unlock"></i>{_common.login}</button>
                    </form>
                    <div class="login-other">
                        <div class="reset-button">{_common.forgottenPassword}</div>
                        <a href="{link Registration:}" class="item reg">{_common.registration}</a>
                    </div>
                </div>
                <div class="password-reset-box password-box-hidden">
                    <div class="login-title">Resetování hesla</div>
                    <form autocomplete="off">
                        {input email}
                        <button n:name="resetPassword"><i class="fas fa-envelope"></i>{_common.resetPassword}</button>
                    </form>
                    <div class="login-other">
                        <div class="reset-button-back">{_common.backToLogin}</div>
                    </div>
                </div>
            </div>
        {/form}

Když kliknu na login tlačítko neprovede se vůbec nic. Ten dump on success vyvolán se nestane.

Ještě jsem zkoušel variantu form->isSuccess a ta mi napíše že formulář není anchored, tudíž nemůže zjistit jestli je odeslán. Možná to s tím souvisí ale předpokládám že když to tu chybu nehází tak jak to mám tak asi ne… Už nevím co by to mohlo být

Nette ajax je inicializovaný správně, v konzoli žádné chyby nejsou a funguje to na překreslení headeru při logoutu takže tím to myslím taky nebude

Díky za váš čas

EDIT: víc info

classa je nette\application\ui\form

závislosti:
„php“: „>= 7.1“,
„nette/application“: „^3.0“,
„nette/bootstrap“: „^3.0“,
„nette/caching“: „^3.0“,
„nette/database“: „^3.0“,
„nette/di“: „^3.0“,
„nette/finder“: „^2.5“,
„nette/forms“: „^3.0“,
„nette/http“: „^3.0“,
„nette/mail“: „^3.0“,
„nette/robot-loader“: „^3.0“,
„nette/security“: „^3.0“,
„nette/utils“: „^3.0“,
„latte/latte“: „^2.5“,
„tracy/tracy“: „^2.6“,
„nettrine/orm“: „^0.7.1“,
„nettrine/cache“: „^0.2.0“,
„contributte/console“: „^0.8.0“,
„nettrine/annotations“: „^0.6.2“,
„contributte/translation“: „^0.7.1“

verze php: 7.3.5

EDIT2:
možná souvisí s tím že je formulář modální? (OTESTOVÁNO, NESOUVISÍ)

Editoval Roman Halaxa (5. 11. 2020 13:41)

David Matějka
Moderator | 6445
+
+2
-

máš tam {form signInForm} a <form>, to ti dohromady fungovat nebude, smaž ten vnitřní <form>

deleted
Člen | 61
+
0
-

David Matějka napsal(a):

máš tam {form signInForm} a <form>, to ti dohromady fungovat nebude, smaž ten vnitřní <form>

Děkuji moc, máš pravdu. Vyřešeno!