php - 使用 JavaScript 打开新窗口后 CakePHP 不重定向

标签 php javascript cakephp

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

相关文章:

javascript - 更改组件的内联样式时发生错误 react

php - CakePHP 3 关联删除

php - 简单的 PHP 登录不会连接到数据库

php - Composer 更新内存限制

php - 如何在 zend framework 1.12 中包含 bootstrap css 文件

javascript - 在 JavaScript 中使用字符串/数组字符串作为变量名?

javascript - 如何将 jquery 事件仅附加到外部 div?

c# - C#到PHP转换器

php - Cakephp 如何获取从今天开始一周内的生日列表

php - 如何在 PHP 中上传和插入多张图片?