backlink – restoreRequest()

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

mám problem s redirectem pomocí restoreRequest.
BasePresenter

abstract class BasePresenter extends Presenter
{

	public function startup(){
		parent::startup();

        $user = Environment::getUser();
        $this->template->access = $user->isAuthenticated();
        if($user->isAuthenticated()){
            $this->template->user = $user->getIdentity()->getName();
        }

    public function handleEditovat(){
        $id = Environment::getUser()->getIdentity()->getData();
        $id = $id['id'];
        $backlink = $this->getApplication()->storeRequest();
    }
}

LoginPresenter

final class LoginPresenter extends BasePresenter  {

    public function createComponentActualForm(){
        $form   = new AppForm;
   	...
        return $form;
    }

    public function login(SubmitButton $button){
        $set = $button->getForm()->getValues();

        $username = $set['user'];
        $password = $set['pass'];

        $user = Environment::getUser();
        if($set['remember']){
            $user->setExpiration('+ 1 year',FALSE);
        } else {
            $user->setExpiration('+ 1 hour');
        }

        try {
            $user->authenticate($username, $password);
	    ...
	    $this->flashMessage($address->firma.': Přihlášení proběhlo úspěšně.','flashSuccess');
            $this->getApplication()->restoreRequest($this->getParam('backlink'));
        }
        catch (AuthenticationException $e) {
            $this->flashMessage('Chyba: '.$e->getMessage(),'flashWarning');
            $this->redirect('this',$this->getParam('backlink'));
        }
    }

    public function renderDefault($backlink){
        $this->template->titleForm = 'Přihlášení k účtu';
    }
}

Problém je, že mě to nevrátí zpátky na stránku, odkud jsem do loginu skočil..nevím, jestli není problém to, že storeRequest se vytváří v abstraktním presenteru…

Editoval 22 (29. 3. 2010 16:18)

jasir
Člen | 746
+
0
-

Na ten LoginPresenter přecházíš redirectem z nějaké stránky, která zřejme extenduje BasePresenter – asi ten UserUpdPresenter. Plníš tedy v UserUpdPresenter parametr $backlink? Když krokuješ, dostaneš se do metody LoginPresenter:login. Je $backlink naplněn?

22
Člen | 1478
+
0
-

dokonce má i tu stejnou, jako je vygenerovaná po clicku „Editovat“, akorát přesměrování proběhne na LoginPresenter a ne na stránku, odkud se přišlo…tzn. $backlink se generuje v BasePresenteru, ale je vkládán do všech potomků, po kliknutí na přihlásit, by měl předat $backlink do LoginPresenteru, což se stane, a Login Presenter by měl po přihlášení se vrátit na původní stránku. Fakt nevím..

Editoval 22 (29. 3. 2010 14:27)

Panda
Člen | 569
+
0
-

Jen dodám, že problém byl v ukládání požadavku – ukládal se požadavek na signál, který přesměrovával, takže po jeho obnovení přesměrování problěhlo znovu.