CakePHP 3.xでflashを使ってみる
- CakePHP 3.x
- 2015年10月26日
- 読了時間: 1分
モーダルを使用している際に、あるデータの登録や更新をした後に 「○○が完了しました」 などのメッセージを表示させ、TOPページに戻るなどといった処理を行いたい場合があると思います。
(少なくてもねこブロは使用したいです!!)
これまではflash メソッドで対応できましたが、CakePHP 3.xでは使えません・・・。
なので、今回はCakePHP 3.xで flashメソッドを使えるようにしたいと思います。
1. まず、AppController.phpにflashメソッド本体を記述します。
public function flash($message, $url, $pause = 1, $layout = 'flash') {
$this->autoRender = false;
$url = 'http://127.0.0.1/cake/users/index'; //遷移させたいURL。
$this->set('url', $url);
$this->set('message', $message);
$this->set('pause', $pause);
$this->set('page_title', $message);
$this->render(false, $layout);
}
2. メッセージを表示させるview を作成します。
1) Template/Layout/flash.ctp を作成する。
2) flash.ctp の中身は以下の通り。
<!DOCTYPE html>
<html>
<head>
<?php echo $this->Html->charset(); ?>
<title><?php echo $page_title; ?></title>
<meta http-equiv="Refresh" content="<?php echo $pause; ?>;url=<?php echo $url; ?>"/>
<style><!--
P { text-align:center; font:bold 1.1em sans-serif }
A { color:#444; text-decoration:none }
A:HOVER { text-decoration: underline; color:#44E }
--></style>
</head>
<body>
<p><a href="<?php echo $url; ?>"><?php echo $message; ?></a></p>
</body>
</html>
3. コントローラーでflashメソッドを呼び出します。
if ($this->Users->save($user)) {
return $this->flash(__('The user has been saved.'), 'http://127.0.0.1/cake/users', 1, 'flash');
}
これでflashメソッドが使えます。
ただ、messageのnull判定などは行っていませんので、ご注意ください。
本当はflash->successなどを使った方が良いんでしょうけど・・・
コメント