インストーラ改修(1) システムメッセージ表示
CandyCaneのインストーラプラグインを改修してみます。
ベースソースは、昨日時点の http://thechaw.com/candycane/source/ です。
まずは、ふと気づいた
「コントローラで $this->Session->setFlash()してるはずのメッセージがテンプレートで表示されていない」
訂正:以下の改修でエラーになる場合があります。
プラグインのレイアウトを読み込まなくなりました・・・
現在、訂正版改修調査中です。
原因判明。
セッション保管設定をdatabaseにしてたのが原因でした。
Configure::write('Session.save', 'database');
セッションstart→DB設定がない→・・・? でなにやら別ルートに陥っていた模様です。
phpやcakeに設定していれば、問題ありません。
ビューあるいはレイアウト側に、セッションFlashがないのだろうと検討で、ソース確認。
layouts/install.ctpに、それらしきコメントアウトがあります。
<div id="main"> <div id="install"> <?php //$layout->sessionFlash(); echo $content_for_layout; ?> </div> </div>
ほぼ全画面で表示が必要なので、レイアウトに入れた方がよいでしょう。
メッセージ表示のための、改修差分
--- a/app/plugins/install/views/layouts/install.ctp +++ b/app/plugins/install/views/layouts/install.ctp @@ -23,6 +23,8 @@ <div id="main"> <div id="install"> + <?php $session->flash(); ?> +
これだけだと、表示メッセージが地味なので、CakePHP本線のCSSも追加しました。
--- a/app/plugins/install/vendors/css/install.css +++ b/app/plugins/install/vendors/css/install.css @@ -12,3 +12,45 @@ .install #footer { background: none; color: #444; } .install #footer a { color: #444; } + +/* Notices and Errors */ +div.message { + clear: both; + color: #900; + font-size: 140%; + font-weight: bold; + margin: 1em 0; +} +div.error-message { + clear: both; + color: #900; + font-weight: bold; +}