FileResponse nebo jiný způsob downloadu a redirect
- GEpic
- Člen | 566
Ahoj,
řeším takový problém. Myslel jsem že to bude jednoduché, ale do chvíle kdy jsem zjistil, že FileResponse terminuje chod programu. Je tedy nějak možné stáhnout soubor a poté redirectovat jinam?
Zkoušel jsem i opačný postup, nejprve redirectovat (s parametrem) a následně dle tohoto parametru stáhnout soubor. Jenže redirect se neprovede a rovnou se stáhne soubor (což jsem nechápal a nechápu).
Je tedy nějaké možné řešení čistě přes PHP? Popřípadě Javascript?
Zkoušel jsem z komponent FileDownloader, ale krom toho že je zastaralý kvůli `@deprecated ` Environment, tak mi také toto nepomohl vyřešit (a i přes callback se chová stejně).
Editoval GEpic (31. 3. 2016 6:32)
- ali
- Člen | 342
Asi bych to resil meta tagem v hlavicce stranky po presmerovani nejak takto:
$this->redirect("DownloadPage:default", ["stahni" => 1]);
{ifset $presenter->params[stahni]}<meta http-equiv="refresh" content="60 ;url={link stahniSoubor!}">{/ifset}
Samozrejme doporucuji si promennou „stahni“ predat do sablony pres presenter ;-)
Editoval ali (31. 3. 2016 6:49)
- GEpic
- Člen | 566
ali napsal(a):
Asi bych to resil meta tagem v hlavicce stranky po presmerovani nejak takto:
$this->redirect("DownloadPage:default", ["stahni" => 1]);
{ifset $presenter->params[stahni]}<meta http-equiv="refresh" content="60 ;url={link stahniSoubor!}">{/ifset}
Samozrejme doporucuji si promennou „stahni“ predat do sablony pres presenter ;-)
Tímto způsobem jsem to rozpohyboval. Nejprve redirect na presenter, kde v
renderNazev
overim zdali se jedna o platny argument a vypisu:
if ($download !== null && $download > 0)
{
$this->flashMessage("Stahování se připravuje, vydržte prosím", "info");
}
{if $presenter->getParameter("download") !== null}<meta http-equiv="refresh" content="3;url={link download!}">{/if}
V handleDownload potom beru argument presenteru a opet overuji, jestli uz se jedna o platny argument k danemu zaznamu, pote vyvolam download a oala! Dle mého nebyla potřeba tuto hodnotu posílat do template.
Díky moc!
Editoval GEpic (31. 3. 2016 7:28)