top of page

CakePHP 3.xでflashを使ってみる

  • CakePHP 3.x
  • 2015年10月26日
  • 読了時間: 1分

モーダルを使用している際に、あるデータの登録や更新をした後に 「○○が完了しました」 などのメッセージを表示させ、TOPページに戻るなどといった処理を行いたい場合があると思います。

(少なくてもねこブロは使用したいです!!)

これまではflash メソッドで対応できましたが、CakePHP 3.xでは使えません・・・。

なので、今回はCakePHP 3.xで flashメソッドを使えるようにしたいと思います。

1. まず、AppController.phpにflashメソッド本体を記述します。

  1. public function flash($message, $url, $pause = 1, $layout = 'flash') {

  2.  $this->autoRender = false;

  3.  $url = 'http://127.0.0.1/cake/users/index'; //遷移させたいURL。

  4.  $this->set('url', $url);

  5.  $this->set('message', $message);

  6.  $this->set('pause', $pause);

  7.  $this->set('page_title', $message);

  8.  $this->render(false, $layout);

  9. }

2. メッセージを表示させるview を作成します。

1) Template/Layout/flash.ctp を作成する。

2) flash.ctp の中身は以下の通り。

  1. <!DOCTYPE html>

  2. <html>

  3. <head>

  4. <?php echo $this->Html->charset(); ?>

  5. <title><?php echo $page_title; ?></title>

  6. <meta http-equiv="Refresh" content="<?php echo $pause; ?>;url=<?php echo $url; ?>"/>

  7. <style><!--

  8. P { text-align:center; font:bold 1.1em sans-serif }

  9. A { color:#444; text-decoration:none }

  10. A:HOVER { text-decoration: underline; color:#44E }

  11. --></style>

  12. </head>

  13. <body>

  14. <p><a href="<?php echo $url; ?>"><?php echo $message; ?></a></p>

  15. </body>

  16. </html>

3. コントローラーでflashメソッドを呼び出します。

  1. if ($this->Users->save($user)) {

  2.  return $this->flash(__('The user has been saved.'), 'http://127.0.0.1/cake/users', 1, 'flash');

  3. }

これでflashメソッドが使えます。

ただ、messageのnull判定などは行っていませんので、ご注意ください。

本当はflash->successなどを使った方が良いんでしょうけど・・・

 
 
 

コメント


FOLLOW ME:

RECENT POSTS: 

SEARCH BY TAGS: 

「I am IT Engineer」をご覧いただきありがとうございます。

このサイトの管理者 ねこブロです。

きっとお役に立てる記事を書いていきますので、何卒よろしくお願いを致します。

 

Thank you for visiting this "I am IT Engineer".

I am nekoburo.

Since I continue to write an article that is for you, and then a kindly please.

WHO AM I ?

<< おすすめサイト >>

これから引越しをお考えの方にお勧めできる引越し会社紹介サイトです。無料一括見積りや優待券、引越し祝い金などお財布に優しい会社ですよ。

Linux Professional Institute

Linux Professional Institute

http://www.lpi.or.jp

bottom of page