1

在我的一项操作中,我通过 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

4

1 回答 1

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'));
}
于 2013-07-05T18:25:27.387 回答