• 追加された行はこの色です。
  • 削除された行はこの色です。
RIGHT:&tag(CakeShop);
#contentsx

* イテレーション [#r894c9c4]
ユースケースの中の注文する流れを作ることにする。
少し、ボリュームが多いように感じるが、イレギュラー処理は後で手直しするとして正常系の注文までができるようにする。

|~イテレーション番号|2|
|~対象ユースケース|A-商品を注文する|
|~期間|2007.2.5〜2007.2.11|
|~メンバー|opaken|
|~目標|商品をカートに入れて注文するところまで作る。|

** テーブル構造のエクスポート [#idfd952d]
-phpMyAdminに手動で作ったテーブルの構造をSQLとしてエクスポートしておく。
-エクスポートのSQL オプションで構造にチェック
--DROP TABLE / DROP VIEWを追加>>チェック
--IF NOT EXISTSを追加>>チェック
--「AUTO_INCREMENT値を追加する>>チェックしない
--逆クオートでテーブルやフィールドを囲む>>チェック
-データには、チェックせずに「実行する」ボタンをクリックするとCREATE TABLEのSQLが表示する

** 商品詳細ページ設計 [#x036a765]
-表示するべき項目を整理する。
-画面仕様を簡単にまとめる。
-該当商品が見つからなかった場合は、「商品が見つかりませんでした」と表示する。
-[[CakeShop/画面設計/商品詳細(items)]]
に整理した。
-画面仕様としては、アクションと表示項目、エラーメッセージをまとめておくこと。

** ページテンプレートの修整 [#s7a37cef]
-メニューのリンクを修正して、作っているページへのリンクを付けておく。
 <?php echo $html->link('商品詳細', '/items/index/1')?>

** アプリケーションの共通設定 [#y12dbe57]
-共通設定は、shop/config/app.ini.php ファイルにグローバル定数として記述するようにする。
 <?php
   define('MAIL_SMTP', 'mail.example.com');
 ?>
kitchen/config/app.ini.phpにも同じ内容をとりあえず用意する。
-共通設定をインクルードするように shop/config/bootstrap.php に追加する。
 // アプリケーションの共通設定
kitchen/config/bootstrap.phpにも同じ内容をとりあえず用意する。
-ビューを修正して値が取れるか確認。
 <?php echo constant('MAIL_SMTP') ?>

** ModelなしのController [#od9b6e9f]
$usesにnullか空の配列「array()」を指定するだけでOKだそうです。
 class MyController extends AppController
 {
     // var $uses = null; works too
     var $uses = array();
 
     function index()
     {
     }
 }

** Ajaxを使ったCRUDのサンプル [#y79bf24b]
-サンプルのソースを下記ページからダウンロード
[[CakePHP :: A Rapid Development Framework :: Posts:http://infor96.com/cake/posts/]]
-動かして見たが、エラーになったので、
views/elements/ajax_post_list.thtmlを修正した。
どうも、ajaxのhelperで、linkToRemoteメソッドが、linkメソッドに移行したようだ。メソッドのパラメータ仕様も変更しているみたい。URLがarrayのオプションで指定するのではなく、第2引数で指定するようになっているようだ。
 <td><?php echo $ajax->link('View', "/posts/view/{$post['id']}" ,array('fallback'=>'#view', 'update'=>"post_content", 'complete'=>"new Effect.Appear('post_content');")) ?>
 | <?php echo $ajax->link('Edit', "/posts/edit/{$post['id']}", array('fallback'=>'#edit', 'update'=>"edit_post", 'complete'=>"new Effect.Appear('edit_post');")) ?>
 | <?php echo $ajax->link('Delete', "/posts/delete/{$post['id']}", array('fallback'=>'#list', 'update'=>"post_table", 'complete'=>"stripe();initDrag();")) ?>  
 </td>

** CakePHPのバージョンアップ [#d488833a]
-CakePHP1.1.13.4450がリリースされている。
1.1.13.4450はバグフィックスリリースで多くの変更・修正が行われており、CakePHP Sessonコンポーネントに任意のコードが実行できる脆弱性も修正されている。
[[CakePHP1.1.13.4450&1.2.0.4451alphaリリース | Shin x blog:http://www.1x1.jp/blog/2007/02/cakephp11134450_1204451alpha.html]]
-どのファイルがバグフィックスで変更されたか分からない。
--どうやって、適用するか検討が必要。

** 共通で使うコンポーネント [#if3fcd7e]
-AppController側で設定していると、全てのコントローラで使えるようになる。個別で使うコンポーネントだけを各コントローラで指定すれば、両方とも使える。
[[CakePHP controller共通のモデル、コンポーネント、ヘルパーを設定する | Shin x blog:http://www.1x1.jp/blog/2006/09/cakephp_common_models_components_helpers.html]]
 <?php
 class AppController extends Controller {
   var $components = array('RequestHandler');
 }
 ?>

** バリデーションの強化 [#c1437dac]
-CakePHP 1.2のバリデーションを1.1で使うようにする。下記のページを参考にした。
[[hetimaの日記 - CakePHP 1.1系に1.2系のバリデーションを組み込む:http://d.hatena.ne.jp/hetima/20070202/1170344802]]
cake/libs/validators.php
↓
cake/libs/validators_1.1.php
に名前変更し、
[[ここ>https://trac.cakephp.org/browser/branches/1.2.x.x/cake/libs/validation.php?format=raw]]からダウンロードした、CakePHP 1.2用のvalidation.phpを
cake/libs/validators.php
に名前を変更してコピーする。
-下記のページもバリデーションの事が書いているので見ておく。
[[onkn101の備忘録 - CakePHPのvalidation:http://d.hatena.ne.jp/onkn101/20070102/1167699730]]

** ログの出力ができない [#v5ea2ce1]
-$this->log('hoge')でログを出力しようとするとエラーになる。
原因は、
[[Webプログラミングに関するメモ: CakePHPの$this->log()、php4.4.4でエラー:http://asaton.seesaa.net/article/32237074.html]]
に書かれていた。
取り急ぎ、file.phpのcreate()メソッドを修正して対応。
$this->getName()

$this->name
※2箇所
-kitchen/tmp/logs/error.logファイルにログが書き込まれるようになった。

** 商品詳細ページ実装 [#n0bcb2ad]
-サイズオプションはプルダウンで選択するので、下記を参考にする。
[[大盛り弁当 A large serving of lunch &#187; CakePHPでselect要素を使う:http://www.usamimi.info/~oomori/blog/cakephp-select/]]
-値が表示できない時に迷ったら、$thisの中身を見ること!
 <?php echo pr($this); ?>

** 商品一覧ページ [#j1f4998a]
-カテゴリと商品の関連情報をテーブル設計する。
-カテゴリに属している商品を一覧表示する。
-ページング機能が必要
--decorateで作った骨格を流用できる?
-商品を選択すると商品詳細ページを開く。

** カテゴリメニュー [#xbf5e130]
-サイドメニューにカテゴリリストを表示する。
-部品として作りたい。
--MovableTypeのWidgetみたいにできるか?
-カテゴリは階層があるので、表示中のカテゴリのサブカテゴリのリストを表示する。
-サブカテゴリが存在しなければ、表示中のカテゴリと同階層のカテゴリリストを表示する。

** ビューのパーツ化 [#h0d87fd8]
-viewのelementsを使うとパーツに分けて管理できるみたい。
[[hetimaの日記 - CakePHP の view の elements がアクセスできる変数:http://d.hatena.ne.jp/hetima/20061217/1166318814]]

** ぱんくずリスト [#me13e3c8]
-表示しているカテゴリの階層をぱんくずで表現する。

** 商品をカートに入れる [#n8e23ff6]
-商品詳細ページから数量を指定してカートに入れる。
-カートの内容は、とりあえずセッション情報として保持する。

** カート一覧ページ [#ecbe8333]
-カートの中身を表示する。
-商品の数量変更および削除ができるようにする。

** 届け先入力ページ [#c42ed7bb]
-カート一覧から「レジに進む」で注文手続きに進む。
-届け先と決済方法を入力する。

** 注文内容確認ページ [#w6c17ca5]
-注文する内容を表示する。
-「注文を確定する」で注文情報をDBに格納する。
-購入者にメールを送信する。
--CakePHPでメール送信する方法?

* ふりかえり [#fb0f8d06]

** Keep(よかったこと) [#f214b814]


** Problem(わるかったこと) [#s8549b73]


** Try(次回挑戦) [#tbdb835a]


** イテレーション評価・得点 [#w3dbabaf]


** 関連ページ [#u78beb3b]
#lsx

#newpage_subdir()

** コメント [#jac86787]
#comment


    ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS