CakePHPで高速Webアプリ開発

第5回 CakePHPで作るToDoアプリ(1)

この記事を読むのに必要な時間:およそ 4 分

モデルの作成

CakePHPではDBへのアクセスはモデルを通して行います。モデルの定義は app/models/テーブル名の単数形.php ファイルに書きます。 tasksテーブルのモデルを定義するため,app/model/task.phpファイルを作成しますリスト3)⁠

リスト3 app/model/task.php

<?php
// app/model/task.php
class Task extends AppModel {
  var $name = 'Task';
}

モデルの定義はPHPのクラスで,必ずAppModelクラスを継承させます。⁠var $name」には単語の頭文字が大文字のモデル名を定義します。

モデルを作成したらもう一度/~gihyo/todo/tasksを開いてみましょう。

今度はビューが見つからないときのエラー画面が表示されました図2)⁠

図2 ビュー作成前のエラー画面

図2 ビュー作成前のエラー画面

次にビューの作成を行います。

ビューの作成

ビューは app/views/コントローラ名/自由なファイル名.thtml となります。ファイル名の部分をアクション名と同じにしておくとコントローラ側で明示する必要がなくなるので,1アクションにつき1テンプレートの場合は同じにしておくと良いでしょう。

tasksコントローラのindexアクション用のビューなので,app/views/tasks/index.thtmlを作成しますリスト4)⁠

リスト4 app/views/tasks/index.thtml

<table>
<tr>
<th>Id</th>
<th>タスク内容</th>
<th>状態</th>
<th>作成日</th>
</tr>
<?php foreach ($tasks as $task) { ?>
<tr>
<td><?php echo h($task['Task']['id']) ?></td>
<td><?php echo h($task['Task']['content']) ?></td>
<td><?php echo h($task['Task']['status']) ?></td>
<td><?php echo h($task['Task']['created']) ?></td>
</tr>
<?php } ?>
</table>

/~gihyo/todo/tasks を開いてみましょう。図3のような画面が表示されたら,今回の作業は終了です。

図3 コントローラ/モデル/ビュー作成後の画面

図3 コントローラ/モデル/ビュー作成後の画面

まずはお疲れ様でした。

最初は前提知識がないため戸惑う部分が多かったかと思います。フレームワークの習得速度は慣れればなれるほど上がっていくものですので,最初の戸惑いに負けずに取り組んでみてください。CakePHPは一般的なフレームワークに比べて覚えることが少ないので,何がわからないかがわからない状態から抜け出せるまでの期間は比較的短いと思います。

次回予定はタスク作成の開発です。

著者プロフィール

秋田真宏(あきたまさひろ)

株式会社ロケットスタート エンジニア。個人ブログは「akiyan.com」。1981年生まれ。

URLhttp://www.akiyan.com/

著書

コメント

  • Re:

    これで動いたら奇跡。

    ”おれ”さんのコメントがなきゃみんな動かないよ

    /view/index.thtmlじゃなくて
    /view/index.ctpにする

    //$this->set('tasks', $this->Task->find((null, null, 'Task.created ASC'));
    $this->set('tasks', $this->Task->find('all'));

    あと文字化け対策も必要。
    これで、1.3で動いた。
    念のため、全部utf8で統一したほうがいいかも

    Commented : #9  はぁ? (2012/06/01, 17:20)

  • 記事が古いので仕方ない??

    CakePHP 1.3ではこのコード動かないですね。
    読み替えて書くしかないのですが、せめてサイトに注意書きがほしいですね。

    Commented : #8  hiro (2011/10/03, 04:54)

  • Re:

    文字化けの件、解決。

    CakePHP MySQL で文字化けを防ぐ設定
    http://blog.syuhari.jp/archives/141

    Commented : #7  おれ (2011/05/12, 00:43)

  • Re:

    はまったのでメモ。


    【解決済み】
    ・データベースのエラー(tasks_controller.php)
    $this->set('tasks', $this->Task->find('all'));
    //$this->set('tasks', $this->Task->find((null, null, 'Task.created ASC'));

    ・Viewがナイって言われる
    /view/index.thtmlじゃなくて
    /view/index.ctpにする


    【未解決】
    表示されたHTMLが文字化け

    Commented : #6  おれ (2011/05/12, 00:40)

  • 動かない

    動きません。

    Commented : #5  ddd (2011/04/04, 19:27)

1ページ(1/2)    

コメントの記入