CakePHP1.2.4.8284
前触ったときはどうにか動く程度になったところでわからずに止めてしまったので再挑戦。
まずはダウンロードして解凍。
RewriteEngineを使用しているのでmod_rewriteを有効にする。
適当なフォルダに丸ごとアップ。
で、フォルダを覗いてみるといきなり動作しています。
個別の設定をしていないのでデフォルト状態であり、DBも設定していないので書き込みなどは行えません。
色々注意が現れます。
Notice (1024): Please change the value of 'Security.salt'
Your database configuration file is NOT present
まずSecurity.saltの設定。
ユーザパスワードをDBに保存するときは当然暗号化を行いますが、その暗号化に利用する値です。
デフォルトだと解読されてしまう可能性があるので適当に変えてしまいます。
app/config/core.phpの150行目あたり、
Configure::write('Security.salt', 'DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi');
を適当な値に変更しましょう。
うっかり運用開始後に変更してしまうと認証できなくなるので注意です。
次にDBの設定。
app/config/database.php.defaultをdatabase.phpにコピー、DATABASE_CONFIGクラスの各値を適切にセットします。
persistentは持続的接続を使用するかどうか、わからなければfalseのままにしておきます。
あとapp/tmp/フォルダをPHPから読み書き可能にする設定も必要ですが、まあWindowsでは関係ないです。
画面から黄色や赤色が無くなれば設定は終了。次に進みます。
CakePHP最大の欠点として、命名規則がややこしいということがあります。
モデル名をCakeSampleとしたら、コントローラ名はCakeSamplesControllerとしなければならないしDBテーブル名はcake_samplesとしなければなりません。
なんでわざわざ複数形とかキャメルケースとか混乱させるんだ。
というわけでDB用のテーブルとしてcake_samplesを作成します。
CREATE TABLE `cake_samples` ( `id` int(10) unsigned NOT NULL auto_increment, `title` varchar(50) default NULL, `body` text, `created` datetime default NULL, `modified` datetime default NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO cake_samples (title,body,created) VALUES ('タイトル', '本文', NOW()); |
idとcreatedとmodifiedはCakePHPが要求するので何はなくとも入れておきます。
適当に何件か登録しておきましょう。
次にコントローラを作成します。
コントローラは簡単に言うとURLによる処理の振り分けです。
正直、更新やら分岐やら何処に書けばいいのかよくわかんないんですよね。
まあ適当にやってみます。
まず
http://localhost/CakeSample/TestAction/a/b
にアクセスすると
Error: CakeSampleController could not be found.
みたいなエラーが表示されます。
ぶっちゃけ書いてあるとおりにすればいいだけなのですが、とりあえずファイルとコントローラを作ります。
/app/controllers/にcake_sample_controller.phpを作成、CakeSampleControllerという名前のクラスを作成します。
中身はとりあえず空っぽ。
またエラー。
Error: The action TestAction is not defined in controller CakeSampleController
TestActionを作れ、と言われます。
要するに上記URLのうち、
ルートから最初の部分(CakeSample)がコントローラ名として、その次の部分(TestAction)がアクション名として呼び出されることになります。
実際の中身としては
http://localhost/?url=CakeSample/TestAction/a/b
と同じで、mod_rewriteによって見た目を変更しているだけです。
このような作りはZendFrameworkやSymphonyといった多くのフレームワークで採用されており、URLがわかりやすく検索エンジンにも取得されやすいといった利点があります。
というわけでCakeSampleControllerにTestActionを作成します。
こちらも中身は空。
次はビューのエラー。
Error: The view for CakeSampleController::TestAction() was not found.
エラーメッセージに出てくるとおりに
/app/views/cake_sampke/test_action.ctp
にファイルを作成します。
中身はやはり空。
以上でとりあえずエラーが出なくなりました。
何も書いていないのに、CakePHPのデフォルトで用意されているテンプレートが表示されます。
ちなみにこの後1.2.5をインストールしてみたのですが、一番上に堂々と「Release Notes for CakePHP 1.2.4.8284.」の文字が。
真っ先に気付く場所だろそこ。
CakePHPの記事一覧