-2つのフォルダに同じファイルを置くのは冗長なので、vendorsフォルダに共通で使う専用フォルダを用意することにした。いうフォルダを用意する。commons_model.phpを作る。-アプリケーションフォルダ側のものは、vendorsフォルダのモデルとコントローラをインクルードするようにしておく。-これで、モデルとコントローラの共通処理を1箇所にまとめることができる。ユースケースの中の注文する流れを作ることにする。ボリュームが多いように感じるが、イレギュラー処理は後で手直しするとして正常系の注文までができるようにする。|~目標|商品をカートに入れて注文するところまで作る。-phpMyAdminに手動で作ったテーブルの構造をSQLとしてエクスポートしておく。-表示するべき項目を整理する。-画面仕様を簡単にまとめる。-該当商品が見つからなかった場合は、「商品が見つかりませんでした」と表示する。-画面仕様としては、アクションと表示項目、エラーメッセージをまとめておくこと。-メニューのリンクを修正して、作っているページへのリンクを付けておく。ファイルにグローバル定数として記述するようにする。kitchen/config/app.ini.phpにも同じ内容をとりあえず用意する。kitchen/config/bootstrap.phpにも同じ内容をとりあえず用意する。-ビューを修正して値が取れるか確認。$usesにnullか空の配列「array()」を指定するだけでOKだそうです。views/elements/ajax_post_list.thtmlを修正した。ajaxのhelperで、linkToRemoteメソッドが、linkメソッドに移行したようだ。メソッドのパラメータ仕様も変更しているみたい。URLがarrayのオプションで指定するのではなく、第2引数で指定するようになっているようだ。-CakePHP1.1.13.4450がリリースされている。Sessonコンポーネントに任意のコードが実行できる脆弱性も修正されている。-どのファイルがバグフィックスで変更されたか分からない。--どうやって、適用するか検討が必要。-AppController側で設定していると、全てのコントローラで使えるようになる。個別で使うコンポーネントだけを各コントローラで指定すれば、両方とも使える。1.2のバリデーションを1.1で使うようにする。下記のページを参考にした。名前を変更してコピーする。-下記のページもバリデーションの事が書いているので見ておく。-$this->log('hoge')でログを出力しようとするとエラーになる。取り急ぎ、file.phpのcreate()メソッドを修正して対応。-kitchen/tmp/logs/error.logファイルにログが書き込まれるようになった。-Log4JのPHP版を使うようにする。-tags.ini.phpで修正できるそうなのだが、入っていなかった。ダウンロードして、app/configの下に入れると反映されるみたい。-ラジオボタンにラベルを付ける。-アクセスのログを見ていると、1回しかアクセスしていないのに2回アクションが動いていて、2回目が失敗している。-調べてみると、ページ内でcssをインクルードしているファイルが無いため発生していた。-cake.forms.cssが無くなっているようなので、下記からダウンロードした。-どうも、全てのアクセスをCakePHP側でチェックしているので、このような動きになっている。-サイズオプションはプルダウンで選択するので、下記を参考にする。-一覧からAddで追加した時に、入力画面の下になぜか一覧までもが表示されている。-2つのフォルダに同じファイルを置くのは冗長なので、vendorsフォルダに共通で使う専用フォルダを用意することにした。いうフォルダを用意する。commons_model.phpを作る。-アプリケーションフォルダ側のものは、vendorsフォルダのモデルとコントローラをインクルードするようにしておく。-これで、モデルとコントローラの共通処理を1箇所にまとめることができる。インクルードするようにしておきます。-ユーティリティ関数では、主に次のものを用意しておきます。phpのエラー発生時にログ出力するようにした。--デバッグトレースを画面やログに出力するための関数。-DBから取得した値をビューで操作する時に連想配列として扱うのではなく、モデルクラスのオブジェクトとして扱いたい。-PHP4では、クラス定数を使うことができないので、連想配列で定数っぽく指定するようにした。-モデルクラスで、$defineに連想配列で定義しておく。-定数を取得する場合は、$this->c()メソッドで取得できる。-メッセージに関する設定を下記の中にdefineで指定するようにした。-カテゴリと商品の関連情報をテーブル設計する。-カテゴリに属している商品を一覧表示する。-商品を選択すると商品詳細ページを開く。-サイドメニューにカテゴリリストを表示する。-部品として作りたい。-カテゴリは階層があるので、表示中のカテゴリのサブカテゴリのリストを表示する。-サブカテゴリが存在しなければ、表示中のカテゴリと同階層のカテゴリリストを表示する。-viewのelementsを使うとパーツに分けて管理できるみたい。-表示しているカテゴリの階層をぱんくずで表現する。-商品詳細ページから数量を指定してカートに入れる。-カートの内容は、とりあえずセッション情報として保持する。-カートの中身を表示する。-商品の数量変更および削除ができるようにする。-カート一覧から「レジに進む」で注文手続きに進む。-届け先と決済方法を入力する。-注文する内容を表示する。-「注文を確定する」で注文情報をDBに格納する。-購入者にメールを送信する。-共通の処理をcakecommons以下にまとめることができた。-Log4phpを使うことができたので、ログの監視がやりやすくなった。-プルダウンの使う方が解った。-エンティティの概念をうまく吸収できた。-CakePHPがバージョンアップした際のアップデートが難しい。-日本語のメッセージがソースコード内に埋まっているため、多言語対応する時に困る。-共通部分の実装および検討に時間がかかり、実際の画面の実装が進まなかった。-アップデート時には元のアーカイブと比較して変更部分のみをマージするようにする。フレームワークを初めて使うときには、共通部分をどのようにして組み込んでいくかの検討に時間がかかることが解った。プロトタイプ的に作っていくにしても、全体を考えながら進めなければいけないので、共通ロジックの実装を考慮する必要あり。