忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2024/11/22 14:04 |
CakePHP-01:CakePHP再挑戦

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の記事一覧

PR


2009/09/25 18:51 | Comments(0) | TrackBack() | PHP

トラックバック

トラックバックURL:

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<書評:「PHPサイバーテロの技法―攻撃と防御の実際」の問題点 | HOME | OpenPear-03:Acme_IdolMaster>>
忍者ブログ[PR]