cakephpでcookieComponent使用の注意点
cakeでショッピングカート機能みたいなものを開発する時に気づいたんですが。
結論から言うとcakephpのcookieComponentに2次元配列を渡すと2回目以降のアクセスだとNGとなります。
Cookie->name = 'hogeCookieName'; #名前を決めちゃいます。 $this->Cookie->time = "5 days"; #一応五日間で設定 $this->Cookie->key = 'hogehogew!';#暗号化のキーーーーー } function add(){ #クッキーにデータを入れる $cookie_data = array( "id1"=>array("name"=>"hoge1", "size"=>"SS"), "id2"=>array("name"=>"hoge2", "size"=>"MM"), "id3"=>array("name"=>"hoge3", "size"=>"LL"), ); $this->Cookie->write("hoge",$cookie_data); $this->setAction("view"); } function view(){ #クッキー内容を出力 print_r($this->Cookie->read("hoge")?$this->Cookie->read("hoge"):array()); exit; } }
/cart/add を実行すると無事に
Array ( [id1] => Array ( [name] => hoge1 [size] => SS ) [id2] => Array ( [name] => hoge2 [size] => MM ) [id3] => Array ( [name] => hoge3 [size] => LL ) )
↑これはクッキーに保存して、すぐアクセス(一回目)した場合。
でも
/cart/view を実行すると
Array ( [id1] => Array [id2] => Array [id3] => Array )
↑2次元配列の内容がなぜかArrayになっています。うまく保存した値を読めません。
原因は時間がある時ゆっくり調べますが、とりあえずクッキーに2次元配列を保存しないのを決めました。