2012年12月8日土曜日

setFlash()されたかどうだか

いろいろとメッセージを表示したいものです。
そんなとき setFlash() って便利!
$this->Session->flash() する前に中身を確認したいときってあると思います。

$this->Session->setFlash('ホニャララ');
$hoge = $this->Session->read('Message.flash');

とすると、

$hoge['message'];

で確認できます。
他にもパラメータを渡せるようです。

http://book.cakephp.org/2.0/en/core-libraries/components/sessions.html
SessionComponent::setFlash(string $messagestring $element = 'default'array $params = array()string $key = 'flash')


2012年11月23日金曜日

PHP連想配列の先頭にアイテムを追加

連想配列の先頭にアイテムを追加したい。

$ary = array('001' => 'item1', '002' => 'item2', '003' => 'item3');

array_reverse($ary);
$ary['addkey'] = 'addvalue';
array_reverse($ary);

ひっくり返した配列にアイテムを追加してまたひっくり返す。

セレクトボックスのソース使用している連想配列の先頭にアイテムを追加したいときなど。

2012年11月18日日曜日

CakePHP2で一覧形式のデータを保存する

こんな感じです。

foreach($data as $rec) {
  $this->Model->create();
  $this->Model->id = $rec['id'];
  $this->Model->save($rec, false);
}

ループの数だけSQLを発行するのですね。
フレームワークの魔法はなかったのです。

create()を忘れずに!

2012年11月8日木曜日

cakePHP2 「設定より規約」

CakePHP2です。

「設定より規約」

"convention over configuration"

なるほど、わかります。
これにピッタリハマる案件は幸せです。保守も楽チン???

さて、既存システムのリプレース、やり方はいろいろとあると思います。

予算などなどいろいろな制約の都合上、既存システムからの移行でDBはそのままでいくぜ。
ということもあると思います。結構あると思います。

こんなとき、この「規約」がフレームワークを使用する上でのメリットと、まさにトレードオフになったりならなかったり。

親子関係を持つレコードセットを取得するとき、規約に則っていれば、

find('threaded',…)

などで簡単に取得できます。(これスゴイ!)
がしかし、既存DBレイアウトのままのときはそうもいきません。

join して、find('all', …) で取得したレコードセットを親子関係になるように整形する必要があります。
 ここのコストが結構なものだったりします。
どうせビューでforeachするからそこでやっちゃえよ。というのもわかります。
でもモデルで親子関係の配列を返してやればメンテナンスも楽チンなのです。

実装するとき、SQLがスッと頭に浮かぶのだけれども、せっかくのフレームワーク、ここは「規約」にのっとって、fields/conditions/join/order などを find()メソッドに渡すように書こうとすると結構時間がかかります。(慣れですかね。)

求めるSQL文は頭にあって、それを生成するような、「規約」にのっとった書き方をするのは、ううむ、と思うこともあります。
生成されるのは、結局SQL文です。なので素のSQLをイメージできなきゃ、「規約」も絵に書いた餅ということですね。


2012年10月16日火曜日

xampp入替え

新たにCakePHP2系の環境を作るためにxamppを新しくしてみよう!と思ってハマりました。

新しいxamppは、1.8.1で、古いヤツはPHPのバージョンなどの都合上1.7.1。

1.7.1は、vmware環境(CentOS5)へ移行したためあまり使っていないのですが。。。

今回新しく、c:\xampp1.8.1へインストールしたのですがApacheが起動しません。

いろいろ調べてみると、xamppアンインストールする前に、ApacheとMySQLをアンインストールしておく必要があるとのこと。

●apache
httpd -k uninstall


●MySQL
c:\sc.exe delete mysql


vmwareのサスペンドがサクサクならそちらに環境作るのだけれども。

2012年10月6日土曜日

TwitterBootstrap, IEでハマる

TwitterBootstrap を利用していてIE8, 9でハマりました。IE6,7はおいてけぼり。

モダンブラウザと呼ばれる、GoogleChrome/FireFox/Safari では全く問題なく表示されていたTwitterBootstrapのグリッドシステムですが、IEではなぜかレイアウトが崩れてしまいます。

Paddingか???違う。

<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->


NetBeansで新規HTMLファイルを作成したときについてくる、ファイルの先頭にある上記コメントでした。
DOCTYPE宣言の前に文字があると後方互換モードになるというヤツらしいです。

今後のお約束として”DOCTYPE宣言の前には何も書かないとも”ということにします。
XML宣言は例外ですね

2012年10月2日火曜日

Git

今更ながらNetBeans7.0にGitプラグインを導入しました。

あー楽チン。もっと早く導入すればよかった。
バージョン管理で問題が発生する前でよかった。


チームのプルダウンとGitのサブメニューが同じ。。。こんなもの???