CakePHPで、特定のリンクをクリックしたとき、  
別のページを新規ウインドウで表示させる前に、元のページをリロードさせたいのですが  
そのようなことはできるのでしょうか？

```

    /** UserController **/
    public function hogehoge($user_id = 0) {
        // ここでDB更新処理を行う
        $this -> User -> id = $user_id;
        $this -> User -> saveField('is_new', false);
    
        // 元のページをリロード
    
        // 別のページにリダイレクト
        $this -> redirect('http://hogehoge.jp');
    }
    
```

なお、上記処理を行う前に、Viewでは下記のような記述をして、  
新規ウインドウを起動させています。

```

    <?php
        // index.ctp内の記述
        $this -> Html -> link('GO', 'hogehoge/'. $user_id, array('target' => '_blank'));
    ?>
    
```
CC BY-SA 3.0
2016-04-21T09:53:03.543
24222
2016-04-21T12:43:27.917
14172
question
cakephp
CakePHPで別ページにリダイレクトさせる前に自サイトのページをリロードしたい
_そのようなことはできるのでしょうか？_  
できません。

ただし、あなたがコード例に挙げたような「CakePHP側の`hogehoge`メソッドの中では」と言う条件付きですが。

あなたが記載された形で`hogehoge`メソッドが呼ばれると、ブラウザはそのレスポンスを「新規ウインドウ」用のものとして解釈し、その中に「元のページ」に関する指示や情報を埋め込むことはできません。

「特定のリンクをクリックしたとき、別のページを新規ウインドウで表示させる前に、元のページをリロードさせたい」と言う要件があれば、(CakePHPかどうかに関わらず)元のページ側でJavaScriptで処理しないといけないでしょう。

CakePHPでJavaScriptを使っちゃいけないというわけではないですが、ご質問内のコード例から考えると別トピックと言えるように思います。「元のページ」内のJavaScriptから実行するのであれば「元のページをリロード」することも、「別のページを新規ウインドウで表示させる」ことも、それほど大したコードにはなりません。一度ご自身で調べたうえで、どうしてもわからない点が出たら、その時点でまた別の質問スレを立てられればいいのではないでしょうか。
CC BY-SA 3.0
2016-04-21T12:43:27.917
24226
2016-04-21T12:43:27.917
13972
24222
answer