*

[CakePHP]SNSを作ろう ブログ編2~MVCの作成~

公開日: : 最終更新日:2014/12/17 CakePHP, php, SNS

SNSを作ろうまとめページはこちら

前回の続き。

ブログ編は基本的にこちらのチュートリアルを進めています。
ぶっちゃけそっちのチュートリアル見たほうがいいです。
ここは自分の知識を植え込むために書いてるのがメインです。
あと疑問に思ったところを調べて追記などなど。

MVCのそれぞれのパーツを作っていきます。

 

まずはModel
モデルはデータを扱ったりする部分です。簡単に言ってしまえば、処理担当です。
/app/Modelディレクトリに作成します。
命名規約は単数形のアッパーキャメルケースです。
今回はpostのModelになるので、「Post.php」という名前になりますね。

またクラス名も同一名称になり、AppModelを継承します。

<?php
class Post extends AppModel{

}

Modelはfindやsaveなどのデータを扱うメソッドが用意されています。
が、とりあえず出番は後ほどかな。

 

次にController
コントローラはそのままですね。司令塔です。
具体的にはModel(処理)とView(見た目)の間を取り持つ役目です。
接尾語はControllerを付けます。
命名規約はアッパーキャメルの複数形単語です。
よって、postのコントローラですので、PostsControllerという名前になります。

また、このControllerの名前とメソッドの名前は実際にブラウザで見るときのURLと密接な関係があります。

http://hogehoge.com/[Cakeのディレクトリ名]/[Controller名]/[メソッド名] というURLの形をとります。

例えばPostsControllerのindexというメソッドを実行するならば、
http://hogehoge.com/[Cakeのディレクトリ名]/Posts/index というURLになります。
この機能をディスパッチャって言います。
便利!
Controllerの保管場所は/app/Controller/ディレクトリです。
AppControllerを継承します。

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

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

フィールドで宣言している$helpersは利用するヘルパーです。
Webページを作成するという特性上、得たデータをHTMLに変形するのですが、それを書き込むのはしんどい。
そこでヘルパーの登場です。
ヘルパーを利用すれば、与えたデータをいい感じのタグ整形などしてくれます。
HtmlとForm、Sessionっていうヘルパーは特に宣言しなくても、利用出来るんですけどね。
逆にこの場合Sessionヘルパーは使えなくなるのかな? あとで調べておこう。

$this->set('posts', $this->Post->find('all'));

setは変数postsにデータを代入しています。
$this->Post->find(‘all’)はpostsテーブルのデータを全て得ています。select * from postsみたいなもんです。
よってまとめると、postsテーブルの全てのデータをpostsという変数に保管しています。

 

最後にView
もうそのとおりで、データを受け取って、見やすい形に整形します。
ユーザが見る部分ですのでView。
入力もここでさせます。
ファイル名称は小文字のアンスコ区切りです。
またファイルの保管場所は/app/View/[大文字名称]/[メソッド名].ctp になります。
PostのControllerのメソッドであるindexのViewであれば /app/View/Post/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>

こんな感じでHTMLとphpが同居します。
echoすることにより、ページに文字等を埋め込むわけですね。

$this->Html->link($post['Post']['title'], array('controller' => 'post', 'action' => 'view', $post['Post']['id']));

ではリンクを作成しています。
linkの第一引数がリンクの名前。第二引数がリンク先ですね。

 

以上を記述して、各ディレクトリに配置。
さて、早速テストしてみたい。
http://www.hogehoge.com/hoge/Post/ をブラウザで打ってみましょう。
Wannabenote
じゃん。出来ました。
ここで、おや?と思うのがhttp://www.hogehoge.com/hoge/Post/ではindexメソッドを呼んでないじゃないか、と思うかもしれません。
しかし、URLで特にメソッドを指定しないと、indexメソッドを呼ぶことになります。

つまりhttp://www.hogehoge.com/hoge/Post/はhttp://www.hogehoge.com/hoge/Post/indexと同じ、ということです。

そんな感じで続きます。

やはり説明形式で書いてくと理解が深まっていいです。

次回更新しました→CakePHP]SNSを作ろう ブログ編3~投稿画面作成~

ad

関連記事

logo

[CakePHP]bakeコマンドでModelを作る

CakePHP関連まとめページはこちら。 bakeコマンドを使う チュートリアルとか本とか読んで

記事を読む

Wannabenote

[CakePHP]SyntaxHighlighterを利用する

ソースを綺麗に表示する このサイトでも利用しているのですが、ソースを表示して、かつ予約語などを別色

記事を読む

Wannabenote

[PHPStorm]DB接続設定 SQLをPHPStormから投げれるようにする

事の発端 今日、仕事してて、SQLを組んでたんです。 データ的には大して面倒ではない5テーブルの

記事を読む

Wannabenote

[PHPStorm]SNSを作ろう IDE環境作成編

SNSを作ろうまとめページはこちら。 前回の続き、というか閑話休題。 プログラムをガチで

記事を読む

Wannabenote

[CakePHP]SNSを作ろう ブログ編5~編集画面作成~

SNSを作ろうまとめページはこちら CakePHPで閲覧画面を作った続きです。 投稿を手軽に

記事を読む

Wannabenote

[CakePHP]SNSを作ろう ブログ編

SNSを作ろうまとめページはこちら。 前回の続き。 さて、私が今作りたいのはブログがメイ

記事を読む

Wannabenote

[CakePHP]bakeコマンドでViewを作る

CakePHP関連まとめページはこちら。 最後はViewを焼いてみます。 Viewを焼き上げ

記事を読む

Wannabenote

[CakePHP]SNSを作ろう CakePHP設定編

SNSを作ろうまとめページはこちら 前回の続き。 前回のこの画面は設定が必要な箇所を示し

記事を読む

Wannabenote

[SNS,PHP]SNSを作ろう OpenPNEインストール編

ふと今日、ほしいなーって思ったSNSがないんです。 どこ探してもない。 ……ないなら作っちゃ

記事を読む

Wannabenote

[CakePHP]SNSを作ろう ブログ編3~投稿画面作成~

SNSを作ろうまとめページはこちら→SNSを作ろうまとめページ 前回(SNSを作ろう ブログ編

記事を読む

ad

Message

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

ad

  •  Auther;わなび

     「オープン系得意だよね? 俺のPCの調子悪いんだけど」という無茶振りから解き放たれゲームエンジニアに。
    C#とかUnityを扱います。
    Twitterフォロー大歓迎です。
    githubアカウント→wannabenote
  • follow us in feedly
PAGE TOP ↑