- 2008/02/27
- CakePHP
前回はCakePHPの基本的な情報について解説しました。今回は、実際にDBのテーブルを作成し、モデル/コントローラを作っていきます。
掲示板のテーブル構造
今回は勉強用ということでシンプルな掲示板を作ります。
- 入力項目は、本文/名前/メールアドレス/URI/パスワードのみ
- レスはなし
- パスワードを入力した場合に限り編集/削除可能
- 投稿記事一つにユニークなURIを持たせる(Twitterのような)
テーブルの構造は以下のようにしました。
CREATE TABLE articles (
id serial NOT NULL,
name text,
email text,
uri text,
message text NOT NULL,
status boolean DEFAULT true NOT NULL,
"password" text,
created timestamp without time zone NOT NULL,
modified timestamp without time zone NOT NULL
);
ALTER TABLE ONLY articles
ADD CONSTRAINT articles_pkey PRIMARY KEY (id);
- id
- プライマリーキー
- name
- 投稿者名
- メールアドレス
- uri
- WebサイトURI
- message
- 投稿本文
- status
- 表示/非表示用
- password
- パスワード
- created
- 投稿日
- modified
- 編集日/削除日
モデルの作成
まずはモデルを作成します。モデルは app/models/テーブル名の単数形.php として作ります。
app/models/article.php
<?php
class Article extends AppModel {
var $name = 'Article';
}
モデルは必ず AppModel クラスを継承して作ります。また、var $name には頭文字が大文字のモデル名を指定します。
コントローラの作成
次にコントローラを作成します。コントローラは app/controllers/コントローラ名_controller.php として作ります。コントローラ名は命名規則に従っていれば自由につけられます。今回は、articles とするのでファイル名は articles_controller.php になります。
app/controllers/articles_controller.php
<?php
class ArticlesController extends AppController {
var $name = 'Articles';
var $uses = array('Article');
}
モデルと同じように、AppController クラスを継承させます。また、var $name にも同じように頭文字が大文字のコントローラ名を指定します。
var $uses = array(); には使用するモデル名を指定します。Article という名前でモデルを作ったので、var $uses = array(‘Article’); とします。また、複数のモデルを指定することも出来ます。
次にコントローラにアクションの定義をします。掲示板として必要なアクションは
- 通常表示
- 記事単体の表示
- 新規追加
- 編集時のパスワード確認
- 編集
- 削除時のパスワード確認
- 削除
の7つに分けられます(フレームワークを使うのはほぼ初めてなので、ここですでに間違っているかもしれないです><)。
アクションはコントローラクラスのメソッドとして登録します。前述した通り、アクションへのアクセスは /コントローラ名/アクション名 になります。アクション名を指定しなかった場合は、index アクションが呼び出されます。
まず、アクションの中身はいいとして定義だけしてみます。
app/controllers/articles_controller.php
<?php
class ArticlesController extends AppController {
var $name = 'Articles';
var $uses = array('Article');
//通常表示
function index() {
}
//記事単体の表示
function messageDetail() {
}
//新規追加
function add() {
}
//編集時のパスワード確認
function editPassword() {
}
//編集
function edit() {
}
//削除時のパスワード確認
function delPassword() {
}
//削除
function del() {
}
}
実際にアクションの中身を作ります。(続きます)
- Newer: なんとか組
- Older: CakePHPで掲示板を作ってみる#1