2017-08-20 4 views
0

J'ai une application où j'ai besoin de rediriger vers un site Web (exemple ci-dessous). Mon problème est que l'application cakephp3 est intégrée dans un iframe wordpress et pour une raison quelconque, la commande ci-dessous s'exécute à l'intérieur d'un iframe afin que j'ai une page Web dans une page Web. Comment puis-je rediriger vers une page Web en dehors d'un iframe?ne peut pas rediriger en dehors d'un iframe avec cakephp3

//controller 
if .... 
    return $this->redirect('http://www.xxxxxx/thank-you-application/'); 
+0

Pourquoi voudriez-vous attendre à un comportement différent lorsque le site est intégré dans un cadre? ** https: //stackoverflow.com/questions/580669/redirect-parent-window-from-an-iframe-action** – ndm

Répondre

0
  • Ce qui se passe à Vegas, reste à Vegas
  • Ce qui se passe dans un iframe, reste dans cette iframe

Je ne pense pas que ce que vous voulez est possible avec PHP (et tout framework PHP), Peut-être à obtenir le contenu de la page que vous voulez charger dans le iframe avec:

$http = new Client(); 
$response = $http->get('http://example.com'); 
$content = $response->body(); 

et mettre le contenu de $ dans la vue dans la "page de niveau supérieur/signifie pas dans l'iframe" (comme ils le font sur le site Web financier), mais je ne suis pas sûr de la façon exacte. La solution la plus simple est d'envoyer à votre contrôleur une valeur ($ redirect = true) à la vue qui dira: "Hey! View, plz ouvrir ce lien vers la fenêtre de niveau supérieur!/Mean outside the iframe".

écrire quelque chose comme ceci dans votre vue (ou modèle):

<!-- ... --> 
<?php if($redirect) : ?> 
<body onload="javascript:window.top.location.href='<?= $this->Url->build([ 
    "controller" => "Pages", 
    "action" => "display", 
    "thank-you" 
    ]) ?>'";> 
<?php else: ?> 
<body> 
<?php endif; ?> 
<!-- ... --> 

Hope it helps