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