CakePHPメモ
CakePHPを初めて使ったので,そのときに参考にした情報についてのメモ。
本当は一つ一つ自分で記事を書いていくほうがいいのだろうけど,項目が多岐にわたり,時間をかけているうちにどんどん内容を忘れていってしまいそうなので,リンク集のような形で情報をまとめることにしました。
想定するCakePHPのバージョンは1.3系です。
今後も気になった情報があれば随時追加していくつもりです。
目次
参考書籍
CakePHPは公式サイトのドキュメントも充実していますが,書籍が手許にあるとやっぱり安心します。
使用したのは以下の2冊。
- 掌田津耶乃 CakePHP1.3によるWebアプリケーション開発 秀和システム
- 滝下真玄 Pocket詳解 CakePHP辞典 秀和システム
まず最初にサンプルを実際に入力して動かしながら1.を通読。
ごくシンプルなアプリケーションに少しずつ機能を追加していく進行は初心者にはありがたかったです。残念なのはアソシエーションの説明でHABTMについての記述がないこと。
2.は開発中にリファレンスとして使用しました。
インストール
書籍等にはローカルの開発環境などを前提にダウンロードしたものをドキュメントルート下の適当なフォルダに解凍するだけでインストールできると解説されていますが,運用環境では公開フォルダに置くファイルは最小限にしたいところです。そこで,環境が許すならば公式でいうところの運用インストールを行うとよいと思われます。
運用(Production)::インストール::CakePHPによる開発::マニュアル::1.3コレクション
【CakePHP】環境作り。XSERVERで注意すること。 | プラプラ式技術系 Access流!
アソシエーション
アソシエーションの考え方について。
【CakePHP】アソシエーションで迷ったらこう考えよう | ECWorks Blog
HABTM
HABTMは他のアソシエーションに比べ複雑なため,web上には先人たちによる情報がたくさん公開されています。タグ機能を実装することを念頭に調べてみました。
タグの実装法
CakePHPの情報ではありませんが,テーブル1つだけの簡易なものから3つのテーブルを要する(CakePHPでいうところのHABTM)ものまで,いろいろなタグの実装法について書かれたページです。
Tags: Database schemas | Then each went to his own home
設定
HABTMの中間テーブルがAppModelオブジェクトになってしまう問題の対応 | cakephperの日記(CakePHP, MongoDB)
データの保存
一口にHABTMの関係にあるデータを保存といっても,あらかじめ一方のテーブルのデータが入力されていてもう一方のテーブルにデータを入力する際に選択する方法,両者を同時に登録する方法,いったん登録したデータの関係を削除したい場合,中間テーブルの扱いなどいろいろな論点があるようです。
Working with HABTM Form Data in CakePHP | Mr PHP
『CakePHP』を使ってみる ~10~ タグ機能を作ってみる | ざ・わーるど.jp@はてな
CakePHPのHasAndBelongsToManyを使う | 子だぬきの技術習得ノート
CakePHP1.3.6:HABTMの関係にあるデータを保存する | 放浪するエンジニアの覚え書き
CakePHPのhasAndBelongsToMany(HABTM)をチェックボックスで関連付ける | webOpixel
Habtm | habtm な関係にあるモデルで、両方とも未登録なデータを同時に保存したい - CakePHP-ja | Google グループ
#CakePHPのhasAndBelongsToMany(HABTM)で、2つのテーブルの関係を削除したい。 | メジロ通信(仮称)
"中間テーブルのcreated、modifiedについて" フォーラム | CakePHP Users in Japan
Re: 中間テーブルのcreated、modifiedについて | 24時間CakePHP
検索
複数のタグによる検索を中心に調べました。
CakePHP HABTMモデルの検索 | エクスギア Blog
CakeDCのsearch pluginの記事が少ないので1個置いときますね。CakePHP Advent Calendar 2010 8日目 | kanonjiの日記
CakePHPのsearch pluginのサンプルコードと記事をちょっと修正。Containableは必要でした | kanonjiの日記
CakePHPのSearch pluginでタグの絞込み検索を作る(AND検索) | kanonjiの日記
CakePHPで検索機能を実装できる「CakeDC search plugin」を使ってみた | webOpixel
ビヘイビア,プラグイン
自分では試していないので使い勝手はわかりませんが,HABTMに関するビヘイビアやプラグインもあるようです。
HABTM Add & Delete Behavior | The Bakery, Everything CakePHP
Simple Tagging Behavior | The Bakery, Everything CakePHP
ページネーション
ページネーションの落とし穴はなんといっても,検索条件が2ページ目以降に引き継がれないことでしょう。リンクが自動生成されるのに,リンク先の内容が条件を反映していないとはなかなか思いません。公式で手当てしてもらいたいところでもあります。そのほか,GroupByしているときの情報や表示に関するTipsなど。
CakePHPのページネーションでPostされたデータを持ち回る方法(Paginator helper) | ひたすらメモするだけのブログ
検索から一覧、詳細まで検索条件を引き継ぎページングする方法 | ZiSTA
Group Byしている時にpaginator->number()が表示されない件 | Life is Really Short, Have Your Life!!
"Paginator + GroupBy" フォーラム | CakePHP Users in Japan
paginatorヘルパーでソート順がひと目でわかるようにする技 | 机上の楼閣
認証
[CakePHP]Authコンポーネントと削除フラグ | すごい速さ
レイアウト
CakePHP1.3.6のレイアウトの利用 | 放浪するエンジニアの覚え書き
エレメント
cakephp 独立したエレメントの作成 | システム開発(大阪)の依頼なら鈴木商店
XMLサイトマップ,RSS
Googleなどに登録するサイトマップを作成したり,RSSを出力。
[CakePHP] XMLサイトマップの出力 | App Dev Blog
CAKEPHP:XML作成方法 | Tomoe Ishikawa
[cakephp]XMLを出力、配信する方法 | blog.hereticsintheworld
"RSSHelperで出力するとなぜか一行目に改行が入る" フォーラム | CakePHP Users in Japan
キャッシュ
CakePHPのCache(Viewキャッシュ)について考える | 半年前の私への教科書
cakePHPのモデルのキャッシュではまった -新しく追加したカラムに値が入らない- | PPl@ce
PEARを利用する
複数の方法があるので環境や目的にあわせたものを選択します。
CakePHPでPEARのパッケージを使う方法イロイロ | 乙女系プロレスリング
CakePHP以外のシステムとの共存
CakePHPを導入するとコントローラを用意していないURLに対してはCakePHPがエラーを返すようになります。そのため,CakePHP以外のシステムを共存させる場合には特定のディレクトリをCakePHPの処理から除外するように設定をする必要があります。
CakePHP内にWordPressを設置する | helog
その他のTips
CakePHPで削除フラグを扱う際の効率化|ぷしゆのWEBクリ道場
プラグイン
CakePHPで普段使っているpluginをまとめてみた | Web活メモ帳
ツール
CakePHP 規約ワードメーカー WordMaker for CakePHP Conventions
CakePHP 2.0情報
CakePHP1.3系アプリのCakePHP2.0-alphaへの移行という茨の道を俺たちは登り始めたばかりだ | Yamashiro0217の日記