とりあえず、consoleディレクトリに実行ファイルあるのでさっそく実行してみる。
$ cd cake/console
$ ./cake bake
Welcome to CakePHP v1.3.7 Console
---------------------------------------------------------------
App : app
Path: /var/www/html/cakephp/app
---------------------------------------------------------------
Interactive Bake Shell
---------------------------------------------------------------
[D]atabase Configuration
[M]odel
[V]iew
[C]ontroller
[P]roject
[F]ixture
[T]est case
[Q]uit
What would you like to Bake? (D/M/V/C/P/F/T/Q)
> Q
対話シェルが起動した。まずは一旦止めて、アプリケーションを生成する。アプリケーション名はmyappとする。 $ ./cake bake -app /var/www/html/myapp
対話シェルを進めていくとアプリケーションに必要なディレクトリ・ファイルが生成される。対話で聞かれるのはデータベース周りの設定。ブラウザでアクセスすると、「Sweet, "Myapp" got Baked by CakePHP!」と表示される。すべて緑じゃないならここで解決しておく。
アプリケーションができたので、次にModelを作る。
> M
---------------------------------------------------------------
Bake Model
Path: /var/www/html/myapp/models/
---------------------------------------------------------------
Your database does not have any tables.
テーブルは事前に準備しておく必要があるのね。CakePHPではテーブル命名規則で複数系じゃないといけなかったと思うので、そこだけに注意して適当にstudentesを作成する。データもとりあえずinsertしておく。mysql> CREATE TABLE `students` (
`id` int(11) unsigned NOT NULL auto_increment,
`name` varchar(8) NOT NULL default '',
`class` tinyint(3) unsigned NOT NULL default '0',
`score` tinyint(3) unsigned NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
mysql> INSERT INTO`students` (`name`, `class`, `score`) VALUES ('ハルヒ', 5, 90), ('有希', 6, 100), ('キョン', 5, 60);
で、もう一度Model作成をする。今度はStudentが選べるようになってるので選択して進める。Modelの設定で聞かれるのは、validationとassociation。テーブル一つなのでassociationはなしで、validationはまた適当に設定すると下記のようなModel作られる。実ファイルはmyapp/models/student.phpに作成される。
---------------------------------------------------------------
The following Model will be created:
---------------------------------------------------------------
Name: Student
DB Table: `students`
Validation: Array
(
[id] => Array
(
[numeric] => numeric
[notempty] => notempty
)
[name] => Array
(
[notempty] => notempty
)
[class] => Array
(
[numeric] => numeric
[notempty] => notempty
)
[score] => Array
(
[numeric] => numeric
[notempty] => notempty
)
)
次にController。色々聞かれる。ほとんどdefaultのまま。変えたのは、下記のsome methodsを作るかってやつだけ。コントローラもできあがった。
Would you like to create some basic class methods
(index(), add(), view(), edit())? (y/n)
[n] > y
---------------------------------------------------------------
The following controller will be created:
---------------------------------------------------------------
Controller Name:
Students
最後にView。これも特に難しいことはなく完了したので、ブラウザからmyapp/studentsを見てみる。先ほど入れたデータのリストが見れる。New Studentから追加もできる。
validationはここで評価されるようだ。validationをnumericとしたものに数字以外を入れるとnumericと表示され登録はできない。idは入力できないのでvalidationは必要なかったかな。
bakeを使うとテーブルを管理(閲覧、追加、削除、更新)するページが簡単にできるのがわかった。今度テーブルを複数にしてrelationがあるのも確認しよう。