redirect – co dělám špatně?

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

Dobrý den,
nevím proč, ale v určité fázi mě nefunguje redirect. Presenter a šablonu mám nastavenou na: Homepage:potvrzeni, kde se po kliknutí na tlačítko chci přesměrovat na Homepage:default, ale toto se mě nedaří. Pokud ale mám redirect za „try“ tak to proběhne…

<?php
protected function createComponentPotvrzeniForm($name)
        {
                $form = new AppForm($this, $name);
                $form->getElementPrototype()->id = 'frm-potvrzeni';
                // napojení containeru
                $form['potvrzeni'] = new PotvrzeniContainer;
                $form['potvrzeni']['btn_ano']->onClick[] = callback($this, 'saveNewClicked');
                $form['potvrzeni']['btn_ne']->onClick[] = callback($this, 'zpetClicked');
        }

       public function saveNewClicked(\Nette\Forms\SubmitButton $button) {
            // vytáhnu si uložené data ze sessionu
            $namespace = Environment::getSession('rkl_test');
            $values = $namespace->defaults;
            // zde budu ukládat dat do DB
            try {
                /*
      		Zde ukládám do DB, vše se uloží správně, i když toto zde nemám, tak to nefunguje (redirect)
                */
                $this->flashMessage("uloženo new...");
                $this->redirect(':homepage:default');
            } catch (Exception $e) {
                //$this->flashMessage($e->getMessage());
                $button->getForm()->addError($e->getMessage());
            }
	// pokud to mám ale zde, redirect se provede
	// $this->redirect(':homepage:default');
        }
?>

Container tlačítek:

<?php
class PotvrzeniContainer extends Nette\Forms\FormContainer
{
        public function __construct(IComponentContainer $parent = NULL, $name = NULL)
        {
                parent::__construct($parent, $name);
                $this->monitor('Nette\Forms\Form');
        }

        protected function attached($obj)
        {
                parent::attached($obj);
                if (!$obj instanceof Nette\Forms\FormContainer) {
                        return ;
                }

                $this->getForm()->getElementPrototype()->setNovalidate('novalidate');
               	$this->currentGroup = $this->getForm()->addGroup("Potvrzení")->setOption('embedNext', true);
                $this->addSubmit('btn_ano', 'Ano')
                    ->setValidationScope(false)
                    ->setHtmlId("btn_ano");

                $this->addSubmit('btn_ne', 'Ne')
                    ->setValidationScope(false)
                    ->setHtmlId("btn_ne");


        }
}
?>
Petr Mašát
Člen | 101
+
0
-

Hoj,
ten redirect ti nefunguje, protože vyvolává výjimku a je v bloku try/catch. Více viz. třeba tohle vlákno na fóru: https://forum.nette.org/…ci-bloku-try
pm*

tatyalien
Člen | 239
+
0
-

Díky, vyřešeno