MacでCakePHPのメモ

CakePHPガイドブックを見ながらの作業メモ。

1. customer.phpとorder_record.phpを作る。(モデル)

2. customer_controller.phpとorder_record_controller.phpを作る。(コントローラ)

3. index.thtml, view.thtml, add.thtml, edit.thtml を作る。(ビュー) 

 

■scriptsディレクトリへ移動する

$ cd Sites/cake/cake/scripts 

 

■bake.phpを実行する

$ php bake.php

___ __ _ _ ___ __ _ _ __ __ __ _ _ ___
| |__| |_/ |__ |__] |__| |__] |__] |__| |_/ |__
|___ | | | \_ |___ | | | | |__] | | | \_ |___
---------------------------------------------------------------


Bake -app in /Users/FinalCut/Sites/cake/app (y/n)
[y] >


Baking...
---------------------------------------------------------------
Name: app
Path: /Users/FinalCut/Sites/cake/app
---------------------------------------------------------------
[M]odel
[C]ontroller
[V]iew

What would you like to Bake? (M/V/C)
>

 

■モデルを生成する

Customerテーブルを選択する。 

What would you like to Bake? (M/V/C) 
> M
---------------------------------------------------------------
Model Bake:
---------------------------------------------------------------
Possible Models based on your current database:
1. Customer
2. OrderRecord

Enter a number from the list above, or type in the name of another model.
> 1

Would you like to supply validation criteria for the fields in your model? (y/n)
[y] >

 

idフィールドのバリデーションを設定する。

Name: id
Type: integer
---------------------------------------------------------------
Please select one of the following validation options:
---------------------------------------------------------------
1- VALID_NOT_EMPTY
2- VALID_EMAIL
3- VALID_NUMBER
4- VALID_YEAR
5- Do not do any validation on this field.

... or enter in a valid regex validation string.


[5] >

5のバリデーション無しを選択する。

続けて、nameフィールドのバリデーションを設定する。

Name: name
Type: string
---------------------------------------------------------------
Please select one of the following validation options:
---------------------------------------------------------------
1- VALID_NOT_EMPTY
2- VALID_EMAIL
3- VALID_NUMBER
4- VALID_YEAR
5- Do not do any validation on this field.

... or enter in a valid regex validation string.


[1] >
 

1の「NOT_EMPTY」を設定する。

続けて、全部のフィールドを適当に設定する。

 

hasMany リレーションを設定する。

---------------------------------------------------------------
Please confirm the following associations:
---------------------------------------------------------------

Customer hasOne OrderRecord? (y/n)
[y] > n

Customer hasMany OrderRecord? (y/n)
[y] > y

Would you like to define some additional model associations? (y/n)
[y] > n

---------------------------------------------------------------
The following model will be created:
---------------------------------------------------------------
Model Name: Customer
DB Connection: default
DB Table: customers
Validation: Array
(
[name] => VALID_NOT_EMPTY
[tel] => VALID_NOT_EMPTY
)

Associations:
Customer hasMany OrderRecord
---------------------------------------------------------------

Look okay? (y/n)
[y] > y

Creating file /Users/FinalCut/Sites/cake/app/models/customer.php
Wrote/Users/FinalCut/Sites/cake/app/models/customer.php

Cake test suite not installed. Do you want to bake unit test files anyway? (y/n)
[y] > n

 

以上で、app/models/customer.phpファイルが作成される。

もう一度、php bake.phpを実行してorder_record.phpファイルを作成する。

アソシエーションは、belongsToを選ぶ。 

Would you like to define model associations (hasMany, hasOne, belongsTo, etc.)? (y/n) 
[y] >
One moment while I try to detect any associations...
Done.
---------------------------------------------------------------
Please confirm the following associations:
---------------------------------------------------------------

OrderRecord belongsTo Customer? (y/n)
[y] > y

Would you like to define some additional model associations? (y/n)
[y] > n
 

 

 

■コントローラーを作成する 

php bake.phpを再度実行してモデルを作る。

---------------------------------------------------------------
Name: app
Path: /Users/FinalCut/Sites/cake/app
---------------------------------------------------------------
[M]odel
[C]ontroller
[V]iew

What would you like to Bake? (M/V/C)
> C
---------------------------------------------------------------
Controller Bake:
---------------------------------------------------------------
Possible Controllers based on your current database:
1. Customers
2. OrderRecords

Enter a number from the list above, or type in the name of another controller.
> 1

Would you like bake to build your controller interactively?
Warning: Choosing no will overwrite controller if it exist. (y/n)
[y] > n

Would you like to include some basic class methods (index(), add(), view(), edit())? (y/n)
[y] > y

Would you like to create the methods for admin routing? (y/n)
[y] > n

Creating file /Users/FinalCut/Sites/cake/app/controllers/customers_controller.php
Wrote/Users/FinalCut/Sites/cake/app/controllers/customers_controller.php

Cake test suite not installed. Do you want to bake unit test files anyway? (y/n)
[y] > n

 

以上で、app/controllers/customers_controller.phpが作成される。

続けて、order_records_controller.phpを作る。

 

■ビューを作成する

現在のバージョンcake_1.1.19.6305だとエラーが発生したので、古いバージョンcake_1.1.18.5850をダウンロードした。(ナイトリーのビルドもダメだったので)

http://cakeforge.org/frs/download.php/549/cake_1.1.18.5850.tar.bz2 

コピーするときはこんな感じで。 バックアップしてから行うこと。

$ cp -prf cake_1.1.18.5850/* cake/

コピーした後は、バックアップから.htaccessを戻してmod_rewriteが有効になるようにする。

cake/.htaccess

cake/app/.htaccess

cake/app/webroot/.htaccess

 

■ブラウザでアクセスする

customersにアクセスして、レコードを追加する。

http://localhost/~自分のログイン名/cake/customers/