在我的一项操作中,我通过 JavaScript 窗口将商品添加到外部网站上的购物车。添加它们之后,我重定向回主页,但是,CakePHP 没有重定向。商品已正确添加到购物车。
//OrdersController
function place_filled_orders($id = null){
$this->layout = false;
$this->autoRender = false;
?>
<script>
cart_window = window.open("http://www.example.com/load_cart_with_stuff");
cart_window.close();
</script>
<?
$this->redirect(array('controller' => 'orders', 'action' => 'home'));
}
当我单击与此操作对应的链接时,它只是停留在/orders/place_filled_orders 而不是重定向到/orders/home
最佳答案
您不能以这种方式在您的 Controller 中添加脚本。这完全违反了 MVC 规则,因此你应该避免它。您应该添加一个执行这两个操作的 View (或元素):
因此添加一个 app/View/Orders/place_filled_order.ctp
文件,内容如下:
<?php
echo $this->Html->scriptBlock('
cart_window = window.open("http://www.example.com/load_cart_with_stuff");
cart_window.close();
window.location.href = "' . $this->webroot . '/orders/home";
');
编辑
乍一看,您实际上是在寻找 requestAction方法代替。所以你会让你的 Controller 看起来像:
function place_filled_orders($id = null) {
$this->autoRender = false;
$this->requestAction('/load_cart_with_stuff');
$this->redirect(array('controller' => 'orders', 'action' => 'home'));
}
关于php - 使用 JavaScript 打开新窗口后 CakePHP 不重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17494636/