IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Jan Demel
Tvůrce
Avatar
Jan Demel:23.3.2015 14:43

Ahoj. Stáhl jsem si nové Nette a narazil jsem na takový problém. Absolutně nechápu, co dělám špatně, ale určitě to bude nějaká strašná kravina. Jde o to, že chci vytvářet sign in form na hlavní stránce. Použiju tedy SignInFormFactory, který mi vytvoří formulář a potom si ho vykreslím. V momentě, kdy ho ale odešlu, tak se nic neděje. Prostě žádný callback. Někdo nějaký nápad, co by s tím mohlo být, nebo co dělám špatně?

HomepagePresen­ter.php

<?php

namespace App\Presenters;

use Nette,
        App\Model,
        App\Forms\SignFormFactory;


/**
 * Homepage presenter.
 */
class HomepagePresenter extends BasePresenter
{
        /** @var SignFormFactory @inject */
        public $factory;

        /**
         * Sign-in form factory.
         * @return Nette\Application\UI\Form
         */
        public function createComponentSignInForm(){
                $form = $this->factory->create();
                $form->onSuccess[] = function ($form) {
                        $form->getPresenter()->redirect('Homepage:');
                };
                return $form;
        }

        public function renderDefault(){
                if($this->getUser()->isLoggedIn()){
                        $this->redirect('Site:default');
                }
        }

        public function actionOut(){
                $this->getUser()->logout();
                $this->flashMessage('You have been signed out.');
                $this->redirect('in');
        }

}
Odpovědět
23.3.2015 14:43
To co se zdá být nemožné, je vždy možné.
Avatar
Odpovídá na Jan Demel
Martin Konečný (pavelco1998):23.3.2015 14:49

Jedinej callback je redirect na homepage, neni to tim? :D

Nahoru Odpovědět
23.3.2015 14:49
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Jan Demel
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Jan Demel:23.3.2015 14:50

Tohle je přesně zkopírované z SignPresenteru. A tam to je takhle a funguje to :D

Nahoru Odpovědět
23.3.2015 14:50
To co se zdá být nemožné, je vždy možné.
Avatar
Odpovídá na Jan Demel
Martin Konečný (pavelco1998):23.3.2015 14:57

Z jaké přesně stránky?
Minimálně ti v té callback funkci chybí

$this->user->login($form->values);
Nahoru Odpovědět
23.3.2015 14:57
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Jan Demel
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Jan Demel:23.3.2015 15:01

Takhle je to pořešené v SignPresenteru a funguje to.

protected function createComponentSignInForm()
        {
                $form = $this->signinform->create();
                $form->onSuccess[] = function ($form) {
                        $form->getPresenter()->redirect('Homepage:');
                };
                return $form;
        }
Nahoru Odpovědět
23.3.2015 15:01
To co se zdá být nemožné, je vždy možné.
Avatar
Odpovídá na Jan Demel
Martin Konečný (pavelco1998):23.3.2015 15:03

Z jaké stránky čerpáš ten zdroják?

Nahoru Odpovědět
23.3.2015 15:03
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Jan Demel
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Jan Demel:23.3.2015 15:04

HomepagePresenter jsem psal já a to, co jsem teď poslal bylo normálně v Nette v presenteru SignPresenter.

Nahoru Odpovědět
23.3.2015 15:04
To co se zdá být nemožné, je vždy možné.
Avatar
Odpovídá na Jan Demel
Martin Konečný (pavelco1998):23.3.2015 15:12

Ta továrnička obsahuje svou callback fci (formSucceeded), která se postará o přihlášení. Druhá v pořadí je ta, která zavolá redirect.
Měnil jsi v tom ještě něco, nebo jsi jen metodu ze SignPresenteru zkopíroval do HomepagePresenteru?

Nahoru Odpovědět
23.3.2015 15:12
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Jan Demel
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Jan Demel:23.3.2015 15:15

Pouze jsem zkopíroval metodu. Napadlo mě - nemůže to být jiným modifikátorem přístupu? V mém kódu jsem použil public a v SignPresenteru je protected.

Nahoru Odpovědět
23.3.2015 15:15
To co se zdá být nemožné, je vždy možné.
Avatar
Odpovídá na Jan Demel
Martin Konečný (pavelco1998):23.3.2015 15:18

Zkus to taky hodit protected. V Nette je tolik magie, že to může udělat v podstatě cokoliv...

Nahoru Odpovědět
23.3.2015 15:18
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Jan Demel
Tvůrce
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Jan Demel:23.3.2015 15:23

Zkusím jak se vrátím domů. Zatím děkuji :)

Nahoru Odpovědět
23.3.2015 15:23
To co se zdá být nemožné, je vždy možné.
Avatar
Odpovídá na Jan Demel
Martin Konečný (pavelco1998):23.3.2015 15:35

No ted doslova nemáš zač. S Nette sice nějakou dobu dělám, ale tento způsob nepoužívám, tak o tom moc nevím :(

Nahoru Odpovědět
23.3.2015 15:35
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 12 zpráv z 12.