2017-08-28 1 views
1

Après la soumission d'un formulaire, dans une action du contrôleur, j'ai besoin d'ouvrir un pdf dans un nouvel onglet, puis rediriger vers une autre page. Si je fais ceci:Rediriger après une autre redirection CakePHP3

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

Je reçois seulement le pdf, mais ne redirige pas l'action "ajouter".

Comment puis-je obtenir le pdf, qui se trouve dans l'URL .../view/saleid.pdf, puis aller à l'action Ajouter?

EDIT

En action du contrôleur add

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

Encore une fois dans l'action du contrôleur ajouter, en haut

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

Répondre

3

Vous obtenez seulement le fichier PDF parce que vous » re rediriger vers elle. Après la redirection, l'exécution est arrêtée, de sorte que la redirection suivante n'est pas exécutée. Cela ne peut pas être fait, en raison d'une limitation du navigateur: l'application a déjà envoyé les en-têtes "télécharger ceci" au navigateur, vous ne pouvez donc pas rediriger l'utilisateur où que ce soit. Ce que vous pouvez faire est de rediriger vers la page de fin d'abord, et commencer le téléchargement à partir de là.

+0

C'est une bonne idée d'aller d'abord à la deuxième page et ensuite commencer le téléchargement, je l'essaie et toujours obtenir la même erreur. Je reçois le pdf mais je ne suis pas redirigé. – Josecanalla

+0

Comment faites-vous cela? Que se passe-t-il si vous supprimez l'en-tête de téléchargement PDF, est-ce que cela va à la page que vous voulez? Rappelez-vous, vous devez gérer le téléchargement maintenant dans l'action du contrôleur de la page qui en résulte. – ishegg

+0

J'ai édité ma question. Si je supprime la redirection au téléchargement pdf, je vais à la page que je veux. Donc, le problème est avec la redirection. – Josecanalla