ホーム > CakePHP > CakePHPでオレ専用ブログを作ってみる vol.1

CakePHPでオレ専用ブログを作ってみる vol.1

チュートリアルをいくつかやってみたけど、やっぱり自分が使う、使いたいようなものを作るつもりでやったほうがその過程で経験するものも格段に違うし、より良いアウトプットも出来るのではないかと思って、あらためて自分用の(自分だけが更新できる)ブログサービスをCakePHPで作ってみることにした。

DBとテーブルの用意

使用するデータベース名:cake
mysql> create database cake;

エントリ用テーブル:entries
(CakePHPの命名規則に従って、entryの複数形を用いた。これによってモデル名はEntryということになる)

MySQLモニターでテーブル「entries」を作成する。

mysql> create table entry(
-> id int null auto_increment primary key,
-> title varchar(255) not null,
-> content longtext not null,
-> created not null,
-> modified datetime not null);

テーブルのデータ構造を確認。

mysql> desc entries;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| title    | varchar(255) | NO   |     | NULL    |                |
| content  | longtext     | NO   |     | NULL    |                |
| created  | datetime     | NO   |     | NULL    |                |
| modified | datetime     | NO   |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+

CakePHPを新しく展開

1.2の最新版cake_1.2.4.8284.tar.gzをUbuntu ServerのWebRootにて展開。そして「cblog」としてリネーム。

新しく作成するブログアプリケーションのディレクトリ
/var/www/cblog

以下二つをあらためて確認する。

1.mod_rewriteは有効になっている。
(CakePHPではこれを使用するのがデフォになっている)

2.Apacheの設定で.htaccessが利用可能になっている。

http://IPアドレス/cblog/にアクセスすると、例によってエラーがいくつか出ているので、これを解消していく。

参照エントリ:CakePHP 1.2でブログチュートリアル[1]

エラーが消えてオールグリーンの状態になったところで次の段階へ。

モデルの作成

ブログのエントリーを格納するデータテーブル「entries」用に、「Entry」モデルを作成する。(ファイルの名前は単数形)

app/models/entry.php


コントローラの作成

ブログのエントリーのためのコントローラ「entries_controller.php」を作成する。(ファイルの名前は複数形_controller)

app/controllers/entries_controller.php

とりあえずEntriesコントローラのクラスを定義して、名前をつけた。


こんだけだとなんにも表示できないんで、エントリ一覧を表示するようにアクションをindexで設定した。(indexアクションはコントローラのデフォルトのアクションで、今回の例だと/cblog/entries/index/でアクセスできる)

set('entries', $this->Entry->find('all'));
    }

}

コントローラはここまでにして、ここまでやった内容(/cblog/entries/index/にアクセスするとブログのエントリ一覧が全件表示される)をブラウザで表示できるように「ビュー」を次に作成する。

ビューの作成

Entriesコントローラ(entries_controller.php)の処理結果をブラウザで表示出来るように「ビュー」ファイルを用意する。命名規則から、このビューファイルは「/app/views/entries/index.ctp」となる。(なので、viewsディレクトリ内にentriesディレクトリを作成する)

app/views/entries/index.ctp

ブログエントリ一覧

  • link($post['Entry']['title'], "/entries/view/".$post['Entry']['id']); ?>

(x)htmlのマークアップはあとであらためてちゃんとやるとして、とりあえず現状ではこんな感じ。(http://IPアドレス/cblog/entries/にアクセスすると)

エントリ一覧その1

エントリのタイトルと投稿日時だけが表示されている。エントリタイトルにはエントリ本文へのリンクが張られている。

エントリ本文も表示させたいのでリスト要素として次のPHPコードを追加。

  • これによってEntryモデル(entriesテーブル)のcontentフィールドの内容も表示されるようになった。

    エントリ一覧その2

    でも、これだとこの時点(エントリ一覧ページを見ている時点)で、どれも全文読めてしまうので、一覧としては意味がない。なので、このエントリ一覧ページではエントリ本文の文字数を制限して表示することにする。

    CakePHPではもっとスマートに記述する方法があるのかもしれないけれど、ちょっと探しただけではなかなか見つからなかったので、普通にPHPのmb_substr()関数を利用することにした。さっき追加したリスト要素のPHPのコード部分を以下のように変更。

  • エントリ本文の冒頭から140文字までを表示することにした。

    エントリ一覧その3

    とりあえずここまで。

    次は、エントリそのものを表示するのに必要なビューファイルを用意して、表示のためのアクションをentries_controller.phpに定義する予定。

    オープンソース徹底活用 CakePHPによるWebアプリケーション開発
    掌田 津耶乃
    秀和システム
    売り上げランキング: 174026
    おすすめ度の平均: 5.0

    5 初心者向け
    5 深く書かれていて便利である

    コメント:2

    regepan 2010年7月14日

    テーブルのデータ構造を確認。

    の部分ですが、

    mysql> desc entries;

    mysql> desc entry;

    ではないですか?

    admin 2010年8月29日

    あー、すんません。そうかもしれません。
    すっかり離れて忘れちゃってるんで即答できないですが。

    コメントフォーム
    入力した情報を記憶する

    トラックバック:0

    この記事のトラックバック URL
    http://showzine.info/blog/2009/08/cakephp%e3%81%a7%e3%82%aa%e3%83%ac%e5%b0%82%e7%94%a8%e3%83%96%e3%83%ad%e3%82%b0%e3%82%92%e4%bd%9c%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b-vol-1.html/trackback
    トラックバックの送信元リスト
    CakePHPでオレ専用ブログを作ってみる vol.1 - SHOWJIN*BLOG より

    ホーム > CakePHP > CakePHPでオレ専用ブログを作ってみる vol.1

    検索
    フィード

    ページの上部に戻る