2016年5月27日金曜日

cakephp3 admin prefix routingの罠

PHP Ver 5.6.27
CakePHP Ver 3.1.9


cakephp admin prefix routingの罠
・管理画面を作成する場合などControllerをネストする場合は注意!

http://xxx.com/admin/ はsrc/Controller/{dirName}/xxxxController.phpというような
Controllerを作成するが、この{dirName}が曲者。。。

例えば 'Admin' というような名前でディレクトリを作成した場合
XAMPPを利用した場合等、Windows環境では正しく認識されるが、Linux環境では
ディレクトリ名が小文字の 'admin' としないと動作しない
原因は調べられていないが、ディレクトリ名はすべて小文字にしないといけないらしい

MissingControllerエラーが発生するのだが、そのエラーメッセージでは
src/Controller/Admin/xxxxController.phpを作成しろと言われる
しかし、ディレクトリ名が小文字でないと動作しない
バグなのかな?

相当、はまった・・・

cakephp3 how to add intl module

PHP Ver 5.6.27
CakePHP Ver 3.1.9


ディレクトリ作成
$ mkdir -p local/src
ICUインストール
intlインストール時に必要

$ cd local/src/
$ wget http://download.icu-project.org/files/icu4c/54.1/icu4c-54_1-src.tgz
$ tar xzvf icu4c-54_1-src.tgz
$ cd icu/source/
$ ./configure --prefix=$HOME/local
$ gmake
$ gmake install
intlインストール
$ wget http://pecl.php.net/get/intl-3.0.0.tgz
$ tar xzvf intl-3.0.0.tgz
$ cd intl-3.0.0
$ phpize
$ ./configure --with-icu-dir=$HOME/local
$ make
$ cd ~/local/
$ mkdir php
$ mkdir php/extension
$ cd php/extension/
$ cp ~/local/src/intl-3.0.0/modules/intl.so .
$ php -i | grep intl

make install した方が良いと思う

2016年5月5日木曜日

cakephp mysql tinyintの罠

PHP Ver 5.6.27
CakePHP Ver 3.1.9


cakephp mysql tinyintの罠

・cakephpでmysqlのtinyint型を利用するときは要注意!
tinyint(1)と設定した項目はbool型として認識される。

$this->request->dataでは正しくPOSTされてくる、
しかし、patchEntityをするとbool型になる。
何をやっても結果は一緒・・・

これはbugではないのか?とcakephp側のコードを追う
散々調べた結果、cakephpでのtinyint(1)はvarchar型などのbyteと違い、bitと認識されるらしい
相当、はまった・・・
とりあえず、tableをcreateするときに指定なしでtinyintとすることにした