スポンサードリンク

cake-logo
cake-logo

はい、先日から始めたCakePHPの開発日記

もう心が折れそうです。

・・・早っ!

いやいや、今日も少しでも進めていきますよ。

今回は、前回設定したものの続きです。

今回もCakePHPのチュートリアルを見て進めていきます。

入門-CakePHP

スポンサードリンク

CakePHPの命名規則

CakwPHP命名規約はとても大切だそうです。

モデル名はコントローラーとデータベースのテーブルに

結びつくので命名規則はとても大事になりますね。

ここで、命名規則ってなんだって思ったので

調べてみました。

CakePHPの命名規則はキャメル方式のようです。

キャメルケース・・・Wikipediaへ)

まとめるとこんな感じでしょうか?

・コントローラのクラス名は複数形で、最後に Controller が付く。
・モデルは単数形
・ビューは単数形でコントローラーで作ったメソッド名です。
 ここで注意なのが、ビューフォルダ内に作るのフォルダは複数形で、コントローラー名で作ります。
・テーブル名は複数形※テーブル名は小文字です。

(例)名前がPostの場合
 テーブル名 : posts

ファイル名 パス クラス名
コントローラー PostsController.php /app/Controller/PostsController.php PostsController
モデル Post.php /app/Model/Post.php Post
ビュー index.ctp
PostsContorollerクラス内にindexメソッドを作った場合
/app/View/Posts/index.ctp

以上です。

命名規則についてはこちらに詳しく載っていました。

cakePHP2.xの命名規約

参考になりました。

ビューのフォルダ名で少し手こずって

なかなか、表示させれなかったんです。

CakePHPは「設定より規約」(convention over configuration)なので

命名規則は早く慣れたいです。

試しにデータベースのデータを表示させてみた

元々、作ってあるサイトの中身を

CakePHPで書きなおしたいという

思いつきで始めようと思っていたので

いまある、データベースの中身を表示させてみました。
※実際にはテーブル名など違いますので、チュートリアルのものを使ってます。

・モデル
/app/Model/Post.php

class Post extends AppModel {
}

・コントローラー
/app/Controller/PostsController.php

class PostsController extends AppController {
    public $helpers = array('Html', 'Form');

    public function index() {
        $this->set('posts', $this->Post->find('all'));
    }
}

ビュー
/app/View/Posts/index.ctp

<h1>Blog posts</h1>
<table>
    <tr>
        <th>Id</th>
        <th>Title</th>
        <th>Created</th>
    </tr>

    <?php foreach ($posts as $post): ?>
    <tr>
        <td><?php echo $post['Post']['id']; ?></td>
        <td>
            <?php echo $this->Html->link($post['Post']['title'],
array('controller' => 'posts', 'action' => 'view', $post['Post']['id'])); ?>
        </td>
        <td><?php echo $post['Post']['created']; ?></td>
    </tr>
    <?php endforeach; ?>
    <?php unset($post); ?>
</table>

こんな風にして、

アクセスしてみる

cakephp_表示テスト
cakephp_表示テスト

おっ、表示されました。

思ったよりも簡単に一覧が表示できました。

ただ、ビューでecho文を書くのが面倒くさいな~

書きなれている

<?= ?>

で表示できるのか試してみました。

<h1>Blog posts</h1>
<table>
    <tr>
        <th>Id</th>
        <th>Title</th>
        <th>Created</th>
    </tr>

    <?php foreach ($posts as $post): ?>
    <tr>
        <td><?= $post['Post']['id']; ?></td>
        <td>
            <?= $this->Html->link($post['Post']['title'],
array('controller' => 'posts', 'action' => 'view', $post['Post']['id'])); ?>
        </td>
        <td><?= $post['Post']['created']; ?></td>
    </tr>
    <?php endforeach; ?>
    <?php unset($post); ?>
</table>

おっ、表示できた!

これが使えるなら少しはやりやすいかも。

今後も少しづつですけど

進めていきます。

そうそう、元々のサイトのテーブル名は複数形ではなかったので

テーブル名を複数形に直さなければいけなかったんです。

その際、SQLでテーブル名書き直しました。

ALTER TABLE 既存のテーブル名 RENAME TO 新しいテーブル名;

(参考)
MySQL で、テーブル名を変更する方法 (ALTER TABLE … RENAME TO …)

スポンサードリンク