CakePHP2

CakePHPのfind()で取得したデータが全てstring型になるのを、DBのカラムの型に合わせてint型で値を取得する方法(mysql)

CakePHP2からはPDOを使ってDBアクセスするようになりました。PDO(mysql)では、デフォルト設定でデータをfetchするとint型のカラムでもstring型として結果が返ってきます。CakePHPもこの影響を受けており、jsonデータなどに変換する際や、型を厳密に扱いたい…

Cake Beer TalkでCake1から2への移行Tips100を発表しました

CakePHP 1 to 2 Migration tips 100 from ichikaway まぁ、100個も紹介する時間は無く、31個まで。残りはどこかで。。。。ちなみに表紙の写真は、自宅から徒歩10分ぐらいのところにある海。 福岡良いよ、福岡! 今回の会は茅場町のコワーキングスペースCo-Ed…

HABTMの中間テーブルのモデルがAppModelになる問題再び

や、、、奴が帰ってきたぜ!CakePHP1の頃に一度は解決した問題、また別の場所で勃発しました。。。 「HABTMの中間テーブルがAppModelオブジェクトになってしまう問題の対応」 今回は、HTBTMを持ってるモデルでfind()を実行して(recursive=1)、その後に別の場…

CakePHP2.3からinputタグにhtml5のrequired属性がつくようになった

CakePHP2.3から、モデルのバリデーション定義で必須項目にしているフィールドには、Viewのinputタグにrequrired属性が追加されるようになりました。 つまり、下記のようなinputタグが出力されるということです(一番最後のrequired=の箇所) <input name="data[Contact][name]" maxlength="50" type="text" id="ContactName" required="required"/> これがあると、…

CakePHP2実践入門が増刷されました!

CakePHPをバリバリ使ってるエンジニアで書き上げた「CakePHP2実践入門」、おかげさまで増刷(第2刷)となりました! CakePHPをある程度使ってる方にも有用で、例えばソーシャル連携とか、セキュリティとか、テストとか、CakeEmailとか、私もCakePHP2の開発をす…

CakePHP2.3がリリースされました。

CakePHP2.3がリリースされました。 http://bakery.cakephp.org/articles/lorenzo/2013/01/28/cakephp_2_3_0_is_out マイグレーションガイドはこちら http://book.cakephp.org/2.0/en/appendices/2-3-migration-guide.html find('first')が0件だった場合の返…

ComposerでインストールしたPHPUnitをCakePHP2のコンソールから利用する方法

今回は、ComposerでインストールしたPHPUnitをCakePHP2から利用する方法です。Composerのインストール方法は昨日書きました。 「Composerを使ってPHPUnitをインストール」 さて、方法はいろいろとあると思いますが、今回はCake2が元々持っているTestShellク…

App::import('Model', 'モデル名')をCakePHP2用にApp::uses()使うように置換

テストケースなどでモデルの読み込みをApp::importでやっている箇所が大量にあったので、一括置換する方法App::importの箇所を、自分のモデル名の文字列を切り出して、App::usesに置換します。 find ./ -name "*.php" | xargs sed -i "s/App::import('Model'…

Composerを使ってPHPUnitをインストール

PHPUnitはpearなどで入れることも出来ますが、ほかのPearライブラリと同一フォルダにインストールされてしまうため管理しにくいし、チームの各自でPearインストールをしてもらうとバージョンも異なる可能性もあるので避けたい。 必要なファイルだけをGitで管…

フォーム入力画面と確認画面で共通で使えるXFormヘルパーをCakePHP2.0対応しました

Cake1用に作っていたXformヘルパーをCake2.0対応しました。(CakePHP2.1.1でも問題なく動きました) https://github.com/ichikaway/xformHelper/tree/2.0※現在、PHP5.2ではエラーがでますので、PHP5.3以上が動作条件になります(2012/4/18) Xformヘルパーは、…

CakeplusがCakePHP2に対応しました

CakePHPのプラグインでよく使いそうなものをまとめたCakeplusがCakePHP2に対応しました。 @k1LoWさんが全ての修正をしてくれたのでマージしただけ。ありがとうございます!2.0ブランチをご利用ください。 https://github.com/ichikaway/cakeplus/tree/2.0も…

CakePHP2 独自SQL文でPrepared Statementを使う

CakePHP1系では、 Model->query('select * from posts where id=?', array('hoge'));みたいにして擬似バインドできましたが、CakePHP2からは下記の方法でやるとPrepared StatementでSQLを発行してくれます。 // in controller $result = $this->Post->getDat…

CakePHP2のセキュリティコンポーネントでCSRF対策のみ行う

CakePHP1のセキュリティコンポーネントは、CSRF対策と、フォーム改竄対策がセットであるため、例えばjavascriptで動的にフォームなどを追加するとチェックに引っかかります。CakePHP2からは、CSRF対策とフォーム改竄対策がそれぞれオプションでOFFにできます…

CakePHP2からプラグインのbootstrapとroutesが読み込める

app/Config/bootstrap.phpで下記のようにすると読み込めます。 CakePlugin::loadAll(array( 'FooPlugin' => array('bootstrap' => true, 'routes' => true), ));詳細は下記。 http://book.cakephp.org/2.0/en/plugins.html

CakePHP2用の自動フォルダ探索プラグイン

CakePHP1では、ControllerやModel以下のphpファイルを階層化するために、その中にフォルダを作って入れても動くのですが、CakePHP2からは自動探索しなくなりました。 例えば、下記のように複数フォルダに分けてファイル管理する場合、 app/Contoroller/Admin…

CakePHP2.0.1がリリースされましたが、ちょっと待ったほうがいい ->2.0.2リリースで解決

CakePHP2.0.1がリリースされましたね リリースノート リリースノート(日本語訳)今回の変更で、HTTPのレスポンスヘッダにcontent-lengthをセットするようになったのですが、そこにマルチバイト関係の不具合があって日本語のコンテンツだとうまく表示できない…

CakePHP2.0勉強会で発表しました ローディングの話

2011/6/25に開催されたCakePHP2.0勉強会でセッション発表を行いました。 CakePHP2 Loading (Japanese) View more presentations from ichikaway 私の発表動画はこちら。 http://www.ustream.tv/recorded/15605906 簡単に要点だけ言うと、CakePHP2.0からはAut…

CakePHP2.0のネーミングルールの記事翻訳

CakePHP2.0をバリバリ開発しているJose(ホセ)さんの記事をざっくり翻訳しました。自分が理解した範囲で意訳したり注釈つけてます。意味が分からない箇所は原文を参照ください。 http://bakery.cakephp.org/articles/lorenzo/2011/04/14/file_naming_and_cl…