チュートリアル - ブックマークの管理
CakePHP では、まずモデルの元となるテーブルを作成します。
モデルとは Web システムにおいて、主にビジネスロジックを遂行したり、データの永続化(データベースに保存)を担当するオブジェクトです。 CakePHP ではテーブルひとつに対してモデルをひとつ作成します。詳しくは CakePHP における MVC パターンをご覧ください。
今回はこのようなテーブルを作成します。
CREATE TABLE bookmarks ( id INTEGER NOT NULL AUTO_INCREMENT, site_name VARCHAR(100) NOT NULL, url VARCHAR(255) NOT NULL, description VARCHAR(255) NOT NULL, PRIMARY KEY (id) );
id はプライマリキー、 site_name はサイト名、 url は URL 、 description は詳細説明を意味します。
ここで CakePHP にはテーブルの命名に規約がありますので注意してください。詳しくはフォーラム(CakePHPシステムデザイン)をご覧ください。
ここでは抜粋を挙げます。
- テーブル名は英単語の複数形
- プライマリキーの名前は id
- 外部参照キーの名前は対象のテーブル名の英単語を単数形にして後ろに _id を付加(後述)
テーブルが作成できましたらブラウザでドキュメントルートの URL の後ろに “bookmarks/” をつけたアドレスへアクセスしてください。たとえばドキュメントルートの URL が http://www.blueocean.bz/ の場合は http://www.blueocean.bz/bookmarks/ へアクセスします。
アクセスすると次のような画面が出てきます。
これはブックマークリストを管理(登録削除など)するためのコントローラが必要という意味です。
コントローラについての詳細はモデルと同様に CakePHP における MVC パターンを参照してください。
コントローラはモデルのメソッドを駆使して目的を達成するためのオブジェクトです。 CakePHP ではコントローラが HTTP リクエストを処理して HTTP レスポンスを返すために必要なデータをビューへと渡す役割があります。コントローラはもっとも Web システムという枠組みに依存しています。それゆえ一番最初に警告が発せられる重要なオブジェクトとなっています。
ビューについての詳細はモデルと同様に CakePHP における MVC パターンを参照してください。
警告画面では /app/controllers ディレクトリの下に bookmarks_controller.php というファイル名で次のようなクラスを書いてくださいというメッセージが添えられていますのでその通りにしてください。
/app/controllers/bookmarks_controller.php
class BookmarksController extends AppController { var $name = 'Bookmarks'; }
クラスが書けましたら再び同じアドレスを読み込んでください。今度は次のような画面が出てきます。
今度はビジネスロジックの遂行や永続層(データベース)との接点であるモデルが無いという意味の警告です。 BookmarksController から見ると、登録・削除・編集・一覧の対象であるモデルが無いと動作のしようがないというわけです。このように CakePHP の最も単純な例ではモデル・コントローラ・ビューがモデル名(今回の場合は Bookmark )で一組になります。
警告画面では /app/models ディレクトリの下に bookmark.php というファイル名で次のようなクラスを書いてくださいというメッセージが添えられていますのでその通りにしてください。
/app/models/bookmark.php
class Bookmark extends AppModel { var $name = 'Bookmark'; }
クラスが書けましたら再び同じアドレスを読み込んでください。今度は次にような画面が出てきます。
今度は再びコントローラの警告ですが、これはアクションが定義されていないという意味です。
現在 /bookmarks/ というアドレスを用いていますが、厳密にはこの後にアクション名が続きます。コントローラはアクション名とコントローラがもつメソッド名とをつきあわせて一致したメソッドの内容を実行します。
たとえば追加であれば /bookmarks/add で実行されるメソッドは BookmarksController::add() 、編集であれば /bookmarks/edit で実行されるメソッドは BookmarksController::edit() 、削除であれば /bookmarks/del で実行されるメソッドは BookmarksController::del() 、一覧であれば /bookmarks/index で実行されるメソッドは BookmarksController::index() といった具合です。ちなみにアクション名は自由に命名することができます。なお、先ほどのようにアクション名を省略して /bookmarks/ とした場合は /bookmarks/index が指定されたものと見なします。
本来であればこの後、各アクションの実装に入っていくのですが CakePHP の有用なポイントをお伝えする関係上ここでは scaffolding を利用します。
scaffolding とは先進的なフレームワークが実現している技術で、先ほど作成したモデルとコントローラから、必要な処理の土台を肩代わりする機能です。具体的には Bookmark モデルと BookmarksController コントローラとの関係を自動的に理解して、追加・編集・削除・一覧に必要な処理を自動的に組み上げるものです。ソースコードを自動生成するわけではない点に注意してください。
方法は非常に簡単です BookmarksController に次のフィールドを追加してください。
var $scaffold;つまりこうなります。
/app/controllers/bookmarks_controller.php
class BookmarksController extends AppController { var $scaffold; var $name = 'Bookmarks'; }
編集が済みましたら /bookmarks/ へアクセスしてください。今度は警告のない画面ができているはずです。
入力データの検証はできませんが、すでにブックマークの登録・編集・削除・一覧が動作しています。一覧ページからリンクをたどって各機能を試してみてください。
« 「チュートリアル - ブックマークリストを作る」へ | トップへ | 上の階層へ | 「チュートリアル - ブックマークに評価をつける」へ »
