Jak předat parametr při redirectu mezi presentery?
- Miloš Němec
- Člen | 7
Mám presenter Default, kde v metodě renderDefault() přesměrovávám na presenter Common.
<?php
$this->redirect('Common:customers');
?>
V CommonPresenter bych ale potřeboval vědět, ze kterého presenteru jsem přišel (abych se tam po nějakám zpracování mohl zase vrátit).
<?php
public function renderCustomers() {
$originalPresenter = ???
}
?>
Jak na to?
- lucass
- Člen | 89
Zdar,
buď použij Environment::getHttpRequest()->getReferer()
a
rozparsuj si query, kde máš presenter i action, nebo mrkni na
Application::storeRequest()
a
Application::restoreRequest()
, viz https://forum.nette.org/…o-zalogovani
- Ondřej Mirtes
- Člen | 1536
V CommonPresenter si definuj persistentní parametr $backlink a redirect uveď ve tvaru:
$this->redirect('Common:customers', array('backlink' => $this->application->storeRequest()));
Když se pak budeš chtít vrátit (nejspíš v odesílací metodě formuláře), tak uvedeš:
$this->application->restoreRequest($this->backlink);
$this->redirect('Default:'); //pro případ, že se restoreRequest nepovede
Editoval Ondřej Mirtes (14. 12. 2009 12:23)
- Miloš Němec
- Člen | 7
Díky za rady. Na Referer se bohužel nedá spolehnout a přes (re)storeRequest zase nedostanu pouze presenter. Nakonec jsem použil
<?php
$this->redirect('Common:customers', array('originalPresenter' =>'Default'));
?>
a
<?php
$originalPresenter = $this->getParam('originalPresenter');
?>