在我的一项行动中,我通过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
答案 0 :(得分:3)
您不能以这种方式在Controller中添加脚本。它完全违反了MVC规则,你应该避免它。您应该添加执行这两个操作的视图(或元素):
所以添加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方法。因此,您将使控制器看起来像:
function place_filled_orders($id = null) {
$this->autoRender = false;
$this->requestAction('/load_cart_with_stuff');
$this->redirect(array('controller' => 'orders', 'action' => 'home'));
}