1

私のアクションの 1 つで、JavaScript ウィンドウを介して外部 Web サイトのショッピング カートにアイテムを追加しています。それらが追加された後、ホームページにリダイレクトしますが、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/home にリダイレクトされるのではなく、/orders/place_filled_orders にとどまります。

4

1 に答える 1

3

そのようにコントローラーにスクリプトを追加することはできません。これは完全に 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 に答える