2017-08-28 151 views
1

提交表单后,在一个控制器动作,我需要在新标签中打开PDF,然后重定向到另一个页面。如果我这样做:重定向重定向CakePHP3

$this->redirect(['action' => 'view', $sale->id, '_ext' => 'pdf']); 
return $this->redirect(['action' => 'add']); 

我只得到pdf,但没有重定向到“添加”动作。

我怎样才能获得PDF格式,这是在URL ... /浏览/ saleid.pdf然后去添加操作?

编辑

加控制器动作

return $this->redirect(['action' => 'add', $sale->id]); 

再在添加控制器动作,在顶部

public function add($saleId = null) 
{ 
    if(isset($saleId)) 
    $this->redirect(['action' => 'view', $saleId, '_ext' => 'pdf']); 
    ... 
} 

回答

3

你只得到PDF文件,因为你”重新导向它。重定向后,执行停止,所以下一个重定向不会被执行。

此,通过浏览器限制,不能做到:在应用程序已经发出了“下载这个”头到浏览器,这样你就可以在任何地方将用户重定向。你可以做的是首先重定向到最终页面,然后从那里开始下载。

+0

这是一个好主意,去到第二页,然后再开始下载,我尝试它,仍然得到同样的错误。我得到pdf,但我没有重定向。 – Josecanalla

+0

你最近怎么样?如果删除PDF下载标题,会发生什么情况?是否会转到您想要的页面?请记住,您现在需要在结果页面的控制器操作中处理下载。 – ishegg

+0

我编辑了我的问题。如果我删除重定向到pdf下载,我去我想要的页面。所以问题在于重定向。 – Josecanalla