前提・実現したいこと
Cakephp4を使用して社内システムを構築しています。
ある情報の詳細画面を、windows.open()でサブウインドウを開き、その中で編集させているのですが、
詳細情報を更新した時にフラッシュメッセージがサブウインドウではなく親画面側に表示されてしまいます。
確実にサブウインドウで表示させるための方法を、ご教示いただけるとありがたいです。
よろしくお願いいたします。
該当のソースコード
Javascript
1// サブウインドウでの更新時に、親画面の一覧をリロードして更新内容を反映させる 2$(window).on('beforeunload', function (e) { window.opener.location.reload(); }); 3
PHP
1// HogeController.php 2try { 3 // ...諸々の更新処理 4 $this->Flash->success(__('更新処理が完了しました。')); 5 $this->redirect(['action' => 'view', $data->id]); 6} catch (Exception $e) { 7 $this->Flash->error(__('更新処理に失敗しました。')); 8 $this->redirect(['action' => 'edit', $data->id]); 9}
PHP
1// layout/detail.php 2<!DOCTYPE html> 3<html> 4<head> 5 <?= $this->Html->charset() ?> 6 <meta name="viewport" content="width=device-width, initial-scale=1"> 7 <title> 8 <?= $cakeDescription ?>: 9 <?= $this->fetch('title') ?> 10 </title> 11 <?= $this->Html->meta('icon') ?> 12 13 <!-- Webフォント読み込み --> 14 <link href="https://fonts.googleapis.com/css?family=Raleway:400,700" rel="stylesheet"> 15 <!-- jQuery読み込み --> 16 <?= $this->Html->script('https://code.jquery.com/jquery-3.4.1.min.js'); ?> 17 <?= $this->Html->script('https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js'); ?> 18 <?= $this->Html->script('https://cdnjs.cloudflare.com/ajax/libs/jquery-ui-multidatespicker/1.6.6/jquery-ui.multidatespicker.min.js'); ?> 19 <?= $this->Html->script('common'); ?> 20 <!-- CSS読み込み --> 21 <?= $this->Html->css('https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.css') ?> 22 <?= $this->Html->css('https://cdnjs.cloudflare.com/ajax/libs/jquery-ui-multidatespicker/1.6.6/jquery-ui.multidatespicker.min.css') ?> 23 24 <?= $this->Html->css(['style']) ?> 25 26 <?= $this->fetch('meta') ?> 27 <?= $this->fetch('css') ?> 28 <?= $this->fetch('script') ?> 29</head> 30<body> 31 <nav class="detail-nav"> 32 <div class="detail-nav-title"> 33 <h3><?= $title ?></h3> 34 </div> 35 <div class="detail-nav-button"> 36 <?= $this->Html->link(__('閉じる'),'#', ['class' => 'btn_size_small btn_color_navy', 'onclick' => 'window.close(); return false;']) ?> 37 </div> 38 </nav> 39 <main class="main"> 40 <div class="container"> 41 <?= $this->Flash->render() // ここでフラッシュメッセージを表示 ?> 42 <?= $this->fetch('content') ?> 43 </div> 44 </main> 45 <footer> 46 </footer> 47</body> 48</html> 49
補足情報(FW/ツールのバージョンなど)
CakePHPバージョン:4.2.8
PHPバージョン:7.4.16
jQueryバージョン:3.4.1
あなたの回答
tips
プレビュー