Tag: CakeShop

イテレーション Edit

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

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

テーブル構造のエクスポート Edit

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

商品詳細ページ設計 Edit

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

ページテンプレートの修整 Edit

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

アプリケーションの共通設定 Edit

  • 共通設定は、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 Edit

$usesにnullか空の配列「array()」を指定するだけでOKだそうです。

class MyController extends AppController
{
    // var $uses = null; works too
    var $uses = array();

    function index()
    {
    }
}

Ajaxを使ったCRUDのサンプル Edit

  • サンプルのソースを下記ページからダウンロード
    CakePHP :: A Rapid Development Framework :: 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のバージョンアップ Edit

  • CakePHP1.1.13.4450がリリースされている。
    1.1.13.4450はバグフィックスリリースで多くの変更・修正が行われており、CakePHP Sessonコンポーネントに任意のコードが実行できる脆弱性も修正されている。
    CakePHP1.1.13.4450&1.2.0.4451alphaリリース | Shin x blog
  • どのファイルがバグフィックスで変更されたか分からない。
    • どうやって、適用するか検討が必要。

共通で使うコンポーネント Edit

バリデーションの強化 Edit

商品詳細ページ実装 Edit

商品一覧ページ Edit

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

カテゴリメニュー Edit

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

ビューのパーツ化 Edit

ぱんくずリスト Edit

  • 表示しているカテゴリの階層をぱんくずで表現する。

商品をカートに入れる Edit

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

カート一覧ページ Edit

  • カートの中身を表示する。
  • 商品の数量変更および削除ができるようにする。

届け先入力ページ Edit

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

注文内容確認ページ Edit

  • 注文する内容を表示する。
  • 「注文を確定する」で注文情報をDBに格納する。
  • 購入者にメールを送信する。
    • CakePHPでメール送信する方法?

ふりかえり Edit

Keep(よかったこと) Edit

Problem(わるかったこと) Edit

Try(次回挑戦) Edit

イテレーション評価・得点 Edit

関連ページ Edit

ページ新規作成:

コメント Edit


URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

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