Posts Tagged ‘component’

    はてなブックマーク - TransitionComponent for CakePHPで簡単確認画面実装
    このエントリーをはてなブックマークに追加

    最近はこればかり聴いている小山です。

    今回は、つい先ほど1.0がリリースされたTransition Componentを紹介します。
    (CakePHPのバージョンは1.3.2を想定しています。)

    Transition Component

    Webシステムで、実装が面倒なものとして例えば「確認画面」というものがあります。
    ようは「ページ遷移をともなって完結するような機能」ですね。
    他にも「ウィザード」や「アンケート回答」や「カート」でもいいかもしれません。

    Transition Componentは、そのような「ページ遷移」管理を一手に引き受けてくれるComponentで、hiromi2424さんによって開発がされています。

    Transition Componentは、セッションと、主にCakePHPのモデルバリデーションの機能を利用してページ遷移を管理しており、
    使いこなすとページ遷移管理を非常にすっきりとしたコードで実現することができます。

    今回は簡単な登録機能に確認画面を実装してみます。

    登録機能の実装

    今回はcaketransitionというデータベースにpostsというテーブルを作成します。

    postsの登録機能のMVCは以下のようなソースコードで作成します。

    post.php

    posts/add.ctp

    posts_controller.php

    Post.titleにnotemptyのバリデーションがある簡単な登録機能です。
    ただ、これだとまだ確認画面はありません。

    Transition Componentを利用した確認画面の実装

    ではTransition Componentを利用して実際に確認画面付きの登録機能を実装してみます。
    Modelは特に変更はないので、VとCだけ作成します。

    posts/add.ctp

    posts/add_confirm.ctp

    posts_controller.php

    たった、これだけですっきりした形で確認画面付き登録機能が実装できました。

    ポイント

    ページ遷移を伴う機能を実装するにあたって必要なのは以下の点です。
    また、Transition Componentでは以下のメソッドでそれらを担っています。

    • 正しい操作後の次のページへの遷移と入力データの保持 [TransitionComponent::checkData(), ::automate()]
    • 正しいページを通って来たかどうかのチェック [TransitionComponent::checkPrev()]
    • 各ページで入力されたデータの取得 [TransitionComponent::mergedData(), ::allData()]

    posts_controller.phpを見ても、とても直感的でわかりやすいかと思います。

    まとめ

    今回はTransition Componentの導入として簡単な確認画面付き登録機能を実装してみました。
    本当に簡単な導入部分だけを紹介しましたが、実際に使いこなすと非常に強力な機能を提供してくれます。
    個人的にはTransition Componentはここ最近のNo.1ヒットなCakePHPライブラリです。

    ぜひ使ってみることをお勧めします。

    詳細はREADMEhiromi2424さんのブログを確認してみてください。

    お知らせ

    7月3日(土)に第2回CakePHP勉強会@福岡を開催します。

    メインセッションも県外からのスピーカーセッションや、
    CakePHPベースCMS ”BaserCMS“の開発者の方のセッションなどがあり
    非常に充実していています。

    CakePHPで語りたい皆様、ぜひ参加してください。Transition Componentの使い方の質問なども是非。

    第2回CakePHP勉強会@福岡

    日時 / DATE :2010/07/03 14:00 to 18:00
    定員 / LIMIT :20 人
    会場 / PLACE :Fusic Co., Ltd. (福岡県福岡市中央区大名2-4-22 新日本ビル9F)

    申し込みはこちら→第2回CakePHP勉強会@福岡