ver1.3.0βをセットアップしてみたら、1.2と色々違った

shin1x1さんの記事を検証したくなったので、
CakePHP1.3.0-βをセットアップ+検証環境作り*1のためにbake使用してみました。

気になった点リストアップ
  • chiper_seedという暗号化キー関連の設定が追加になってますが、これの運用用変更時、ご注意。
    • ちゃんとキッチリ書き換えれば、問題ないんですが・・・ ^^;
  • bakeの動作が、あちこちver1.2と微妙に違う
  • デフォルトビューが変貌した(゚ロ゚;)
    • 基本view(CSS)維持する方針や、サイドナビとか角丸ナビっていいな〜☆で、ver1.3乗り換え想定なら、 div.action残すべし。


以下、詳細記述。
 結果的に、結構な長文になりました・・・・ ^^;

1/21再追記 …1/20に追記したはずが、消えてたのでもう一度。

ダウンロード&ソース設置

ソースは以下から1.3.0-betaのzipをダウンロード。
http://github.com/cakephp/cakephp1x/downloads


開発用サーバにアップロードしてunzip&ディレクトリリネーム。


app/tmp以下と、後で行うbakeの為に./cakeの権限変更

[cake@cake cakephp-13b]$ chmod -R 777 app/tmp/
[cake@cake console]$ chmod 755 cake/console/cake
基本設定ファイル関連

設置ディレクトリに早速アクセスしてみると、ver1.2でおなじみの
 「salt変えてねのお願い」
の他に、もう一個Noticeが出ています。


どうやら、「cipher_seed」というのも変えなければならないようです。
名前的に、暗号関連の乱数キーっぽいです。

Notice (1024): Please change the value of 'Security.salt' in app/config/core.php to a salt value specific to your application [CORE/cake/libs/debugger.php, line 674]
Notice (1024): Please change the value of 'Security.cipher_seed' in app/config/core.php to a numeric (digits only) seed value specific to your application [CORE/cake/libs/debugger.php, line 678]


core.phpを見ると。
想像通り、cipher_seedは可逆暗号化のキーのようです。

[cake@cake cakephp-13b]$ vi app/config/core.php
/**
 * A random string used in security hashing methods.
 */
	Configure::write('Security.salt', 'DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi');

/**
 * A random numeric string (digits only) used to encrypt/decrypt strings.
 */
	Configure::write('Security.cipher_seed', '76859309657453542496749683645');

saltは従来通り alphaNumeric、cipher_seedは注意書き通り数字のみで適当に書き換え。
・・・・・たつもりが、cipher_seedのNoticeが消えません。


白状すると、私、
開発とかで使う段には、
 暗号化キーは短文だったり、
 末尾をちょろっと書き換えたりするくらいしか、変えません。

今回、「末尾4桁の数字」を適当に置き換えただけだと、Noticeが消えませんでした。
先頭から4桁を書き換えると、Noticeが消えました。

うーむ、
 cipher_seed、ひょっとすると最後の方は、使ってない可能性?


昔、ちょっと乱数発生使った時に、
 ロジックによっては何桁か以上は設定してもムダー
っていうのがありましたが、
  類似の状態になってるのでしょうか・・・・・


   ひとまず推測だけ。
セキュリティキーとかは、ちゃんと変えましょうねっていうお話ですし ^^;*2


core.phpの他の箇所は変更なし。


core.php関連のNoticeが消えたところで、
 「database.phpを設定して」というメッセージが出ています。


さて、bakeの出番です ^^

bake (1) 初期SQLは・・・・?

さー、bakeだbakeだ*3

まずはDabatase.phpの設定
  これは、ver1.2とほぼ同様だったので割愛。


続いて、動作試験用モデルの作成。


テーブルは、以下のSQLで作成。
姓と名前を保存するだけの構造です。

CREATE TABLE members (
  id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  first_name VARCHAR(64) NOT NULL,
  family_name VARCHAR(64) NOT NULL,
  created DATETIME NULL default NULL,
  modified DATETIME NULL default NULL,
  PRIMARY KEY(id)
) TYPE=InnoDB;


ここで仮SQLを、とりあえずapp/config以下に保存しておこうと思ってディレクトリを覗いてみると・・・
 ver1.2にあった、app/config/sqlがありません。


代わりに、app/config/schemaなるディレクトリが。
 しかしschemaには、db_acl.sqlなどの、ACLやセッション関連のセットアップSQLが入っていませんでした。
   βだからかな・・・? db_acl.phpとかはあるのですが。


それはさておき、membersテーブルを作ったところでbakeします

bake (2) test分離?
[cake@cake console]$ ./cake bake


Welcome to CakePHP v1.3.0-beta Console
---------------------------------------------------------------
App : app
Path: /WEBROOT/cakephp-13b/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)
>

・・・・メニューが何か違います。


↓ver1.2.5

[D]atabase Configuration
[M]odel
[V]iew
[C]ontroller
[P]roject
[Q]uit
What would you like to Bake? (D/M/V/C/P/Q)


[F]ixture、[T]est caseの項目名から類推するだに、
 tests関連のソースを、別途作成しなくてはならない・・・という事の模様。


ひとまず先に進みます。

bake (3) Model:displayFieldって?

Modelの作成。

What would you like to Bake? (D/M/V/C/P/F/T/Q)
> M
---------------------------------------------------------------
Bake Model
Path: /var/www/html/cakephp-13b/app/models/
---------------------------------------------------------------
Possible Models based on your current database:
1. Member
Enter a number from the list above,
type in the name of another model, or 'q' to exit
[q] > 1
A displayField could not be automatically detected
would you like to choose one? (y/n)

また見覚えのないメッセージが(汗)


どうやら・・・
「表示Fieldを自動検出できないんだけどー、一個一個指定してくんない?」
 かな? ^^;


確かに、一般メンバー向けにidとか表示や変更許したいカラムもあるし、
 納得の機能*4


追記:id:zistaさんからのコメントで、機能判明。
formヘルパーでlabelを自動出力する際に、どのカラム名をlabelにするか、の設定で、
機能自体は、ver1.2.x から既存だそうで・・・・ ^^;
1.3で、bakeに追加されたのですね。


  このあたり、テーブル定義で自動検出できる・・・のかな?
ひとまずここは、「はい」で進みます。

bake (4) Model:そしてvalidationが何か違う
A displayField could not be automatically detected
would you like to choose one? (y/n)
> y
1. id
2. first_name
3. family_name
4. created
5. modified
Choose a field from the options above:
> 2
Would you like to supply validation criteria
for the fields in your model? (y/n)

validate・・・かあ。
 まあ、NotEmptyくらいは入れてもいいかな。

[y] > y

Field: id
Type: integer
---------------------------------------------------------------
Please select one of the following validation options:
---------------------------------------------------------------
1 - alphanumeric
2 - between
3 - blank
4 - boolean
5 - cc
6 - comparison
7 - custom
8 - date
9 - decimal
10 - email
11 - equalto
12 - extension
13 - inlist
14 - ip
15 - maxlength
16 - minlength
17 - money
18 - multiple
19 - notempty
20 - numeric
21 - phone
22 - postal
23 - range
24 - ssn
25 - time
26 - url
27 - userdefined
28 - Do not do any validation on this field.
... or enter in a valid regex validation string.

・・・あれ。
 vee1.2では、「設定なし」は29だったのでは。

---------------------------------------------------------------
Please select one of the following validation options:
---------------------------------------------------------------
1 - alphaNumeric
2 - between
3 - blank
4 - boolean
5 - cc
6 - comparison
7 - custom
8 - date
9 - decimal
10 - email
11 - equalTo
12 - extension
13 - file
14 - inList
15 - ip
16 - maxLength
17 - minLength
18 - money
19 - multiple
20 - notEmpty
21 - numeric
22 - phone
23 - postal
24 - range
25 - ssn
26 - time
27 - url
28 - userDefined
29 - Do not do any validation on this field.
... or enter in a valid regex validation string.
  • 13 - file がなくなった(少なくとも、bake選択肢からは)
  • 大文字小文字混じりが、全小文字に変わった

 という違いがあるようです。


ここもひとまず先に進む。
 この先のバリデーションは、大体1.2と同じだったと思うので、割愛。

Would you like to define model associations
(hasMany, hasOne, belongsTo, etc.)? (y/n)
[y] > n

---------------------------------------------------------------
The following Model will be created:
---------------------------------------------------------------
Name:       Member
DB Table:   `members`
Validation: Array
(
    [first_name] => Array
        (
            [notempty] => notempty
        )

    [family_name] => Array
        (
            [notempty] => notempty
        )

)

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

Baking model class for Member...

Creating file /var/www/html/cakephp-13b/app/models/member.php
Wrote `/var/www/html/cakephp-13b/app/models/member.php`
SimpleTest is not installed. Do you want to bake unit test files anyway? (y/n)

やっぱり、Test関係が変わったみたいです。

これに、y/nで答えて、Model作成できました。
   ふう(汗)

bake (5) Controller ようやく一安心;

続いてControllerの作成。
 これはver1.2と、そんなに差異ありませんでした。
  (正確には、最後に「test関連のファイル作成する?」って聞かれてるんですが・・・麻痺してきた(ぇ)
   そうか、ここで「no」って答えた時のために、別途bakeトップに作成メニューがあるのかなあ)

---------------------------------------------------------------
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)
> C
---------------------------------------------------------------
Bake Controller
Path: /var/www/html/cakephp-13b/app/controllers/
---------------------------------------------------------------
Possible Controllers based on your current database:
1. Members
Enter a number from the list above,
type in the name of another controller, or 'q' to exit
[q] > 1
---------------------------------------------------------------
Baking MembersController
---------------------------------------------------------------
Would you like to build your controller interactively? (y/n)
[y] > y
Would you like to use dynamic scaffolding? (y/n)
[n] > n
Would you like to create some basic class methods
(index(), add(), view(), edit())? (y/n)
[n] > y
Would you like to create the basic class methods for admin routing? (y/n)
[n] > n
Would you like this controller to use other helpers
besides HtmlHelper and FormHelper? (y/n)
[n] > n
Would you like this controller to use any components? (y/n)
[n] > n
Would you like to use Session flash messages? (y/n)
[y] > y

---------------------------------------------------------------
The following controller will be created:
---------------------------------------------------------------
Controller Name:
        Members
---------------------------------------------------------------
Look okay? (y/n)
[y] > y

Creating file /WEBROOT/cakephp-13b/app/controllers/members_controller.php
Wrote `/WEBROOT/cakephp-13b/app/controllers/members_controller.php`
SimpleTest is not installed. Do you want to bake unit test files anyway? (y/n)
[y] > y
bake (6) View

最後にViewの作成。
 従来の"おまじない"*5に載っとり、
 一旦bakeを抜けてから再作成。

[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
[cake@cake console]$ ./cake bake

Welcome to CakePHP v1.3.0-beta Console
---------------------------------------------------------------
App : app
Path: /WEBROOT/cakephp-13b/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)
> V
---------------------------------------------------------------
Bake View
Path: /WEBROOT/cakephp-13b/app/views/
---------------------------------------------------------------
Possible Controllers based on your current database:
1. Members
Enter a number from the list above,
type in the name of another controller, or 'q' to exit
[q] > 1
Would you like bake to build your views interactively?
Warning: Choosing no will overwrite Members views if it exist. (y/n)
[n] >

ん?また見慣れないメッセージ。えーと・・・・


 「もし、作ろうとしたところに既存のファイルあったら、上書きしちゃっていーい?(あらかじめ聞いておくけどー)」


つまり、今まで
 「作ろうとしたら既存のファイルあるよーどうしよー、上書きしちゃっていい?」
と都度聞いていたのを、
 最初に"まとめて"確認してるんですね。
  ぅいぅい。

Warning: Choosing no will overwrite Members views if it exist. (y/n)
[n] > y
Would you like to create some CRUD views
(index, add, view, edit) for this controller?
NOTE: Before doing so, you'll need to create your controller
and model classes (including associated models). (y/n)
[y] > y
Would you like to create the views for admin routing? (y/n)
[n] > n


終☆了〜〜

bake (7) では、bakeの腕前拝見・・・で、驚愕

それでは、Members (http://CAKEROOT/members)。
 表示〜


・・・・以下、私のリアルタイム愕然っぷりを、twitter引用&画面キャプチャおりまぜて。

うわぁ!CakePHP1.3、bakeデフォルトのviewにサイドナビがあるぅっ!!

posted at 00:16:17


しかもボタンが角丸。 うわーーーーー CakePHP1.3ーーー!

posted at 00:18:28


(といいつつ、実は自分は角丸デザインが好きではないとか言って台無し(爆)
posted at 00:19:13

ぉいw


・・・自分のセンスの一般性のなさは、自覚しております・・・
 でもせめて「コレは一般受けする」という"知識的判断"は、頑張りたいものです ^^;


閑話休題


とにかく、デフォルトviewが変わってました。


冷静にCSSやソースざっと見た感じ、
従来の.actionsは、概ね維持しつつ、
 これをCSSでサイドナビ&角丸化しているようです。


なので、ver1.3乗り換え前提で、これらのデザイン使いたい方は、
 div class="action" > ul > li
 td class="action"
でナビゲーション入れる前提を、保つ方が良いでしょう、



・・・・私?
 div.actions、削除しちゃいましたよぅ(T-T)




そして、困惑と驚き連続で、
  本来目的のバーチャルフィールド検証ができてない件。
    明日に、持ち越します・・・・

*1:当初はそうだった。

*2:後日、余裕でたら検証したい・・・

*3:筆者はbake好き。できるコードが多少使いづらいから自作した方がいんじゃね?とか言われても、bake自体がとにかく楽しい

*4:『ブラウザ上にデフォルトで表示するカラム(意識として複数)を選ぶ』と解釈したココでの判断は、間違い(涙)。では実際の『正解』については・・・後日また、調べて判ったら記載します

*5:作ったばかりのControllerやModelが反映されないから説@出所見失ってますが;;