- 追加された行はこの色です。
- 削除された行はこの色です。
-世界的にはシェアが大きいPHPフレームワーク。1.2.5に関しての記事
#contents
*インストール [#t69d6482]
DocumentRoot以下に解凍して、書き込み権限を与えるのみ
chown -R apache:apache cake/
**mod_rewriteの設定 [#kc62b62d]
インストールディレクトリの.htaccessにrewriteの設定がされている。
利用できたほうが何かと便利なのでインストールディレクトリに以下の設定を入れておく。
<Directory "/var/www/html/CAKE_INSTALL_DIR">
AllowOverride FileInfo
</Directory>
*インストール後の設定 [#n5b2fbd5]
**アプリ全体設定 [#ge76ef1c]
app/config/core.php
-Security.Saltの文字列変更
-date_default_timezone_set('UTC'); (PHP 5.3の場合)
**DB接続設定 [#w3544bb6]
app/config/database.php.defaultのファイル名変更→database.php
-文字化けを防ぐために以下の設定を追加しておくことを進める。
'encoding' => 'utf8'
**文字コードの設定 [#s1e81c4d]
全部共通の文字コードはapp/config/core.php
Configure::write('App.encoding', 'euc-jp');
個別には$html->charset('utf-8')で設定できそうだけど、どこで設定するのかな?
**複数データベースの設定 [#q6c0e494]
modelにデータベースを指定する。何も書かないと当然デフォルトのDBを使う。
**DBのエンコーディングと出力エンコーディングが違うときどうしましょ? [#md925e28]
*命名規約 [#a5902397]
-DBのテーブルとModelの関係
|テーブル名|コントローラーファイル名|モデル名|
|cards|cards_controller.php|Card|
|credit_cards|credit_cards_controller.php|CreditCard|
*認証 [#r2564106]
AuthComponentがある
http://blog.ne2ma2.com/archives/160
*TIPS [#j55b2b95]
**外部ファイルの読み込み [#jaf7a2f7]
-App::importを使う。
app/libにおいておくと以下のようにインポートできる。
-Cakephpのinclude_pathは以下のコマンドで取得できる。しかし
echo get_include_path();
初期状態ではcakeのROOTとappのディレクトリとPHPのinclude_pathのディレクトリが表示されるはず。
-
**View関連 [#o3afca81]
|ページのタイトル|$pageTitle変数を設定|
|POSTの取得|$params['form']|
|GETの取得|$params['url']['hoge']|
|セッションkeyの存在チェック|$this->Session->check('key')|
**Model関連 [#dca31b46]
***Insert方法 [#k9a2330e]
新規作成時はフィールド名を持つ連想配列を用意して、saveメソッドを呼ぶ。
$data = array("name" => "test");
$this->Model->create();
$this->Model->save($data);
-検索結果の取得が一件だけならfind('first')、連想配列がシンプルになる。
-直前にインサートしたID取得にはgetLastInsertID
-外部キーとして結合する場合に表示するフィールドを$displayFieldで指定できる。
*その他 [#l2fcf7e7]
*使わないシリーズ [#ia3af68a]
**Viewを使わない [#e72ffd2d]
各functionの中で以下のように記述
$this->autoRender = false;
**Layoutを使わない [#fe65832d]
contorollerの中で以下のように記述
$this->layout = '';
**Modelを使わない [#v61341a4]
$uses = null
**ModelでTableを使わない。 [#j3e9480a]
var $useTable = false;
*トラブルシューティング [#k69a7a62]
**PHPの対応バージョンの問題 [#a5b0ff10]
-5.1.6 CentOS5.3 動作実績有り
-4.3.9 CentOS4.8 動作実績有りだが、セッションがつながらない不具合あり
**DB接続を有効にしたら真っ白 [#p050686f]
-PHPのDB接続モジュールが入っていないとまったくの手がかりなくエラーとなる。モジュール入れれば解消。
*CakePHP Modelに沿ったDB定義 [#n824d5ab]
-Modelが単数形でテーブル名は複数形となる。なので英語がよろしい。
-IDはつけた方が良い。IDに意味を持たせないサロゲートキー的に使う。
-
**MySQL [#xfe038fe]
CREATE TABLE users(
id int unsigned auto_increment primary key,
nickname varchar(30) NOT NULL,
created datetime default NULL,
modified datetime default NULL
);
CREATE TABLE profiles(
id int unsigned auto_increment primary key,
user_id int unsigned unique,
blog_url varchar(256),
hobby varchar(256),
created datetime default NULL,
modified datetime default NULL
);
**PostgreSQLでTable定義 [#tf880807]
チュートリアルはMySQLしか乗っておらず、日本ではPostgresがまだまだ使われているので記述しておく。
CREATE SEQUENCE car_id_seq;
drop table cars;
CREATE TABLE cars (
id INTEGER DEFAULT nextval('cars_id_seq') PRIMARY KEY,
car_id VARCHAR(50),
comment TEXT,
created TIMESTAMP DEFAULT NULL,
modified TIMESTAMP DEFAULT NULL
);
*Link [#g5a580d9]
http://www.syuhari.jp/blog/archives/6