しぃぶろぐ。

仕事とか技術関係のこと。他色々

CakePHPのMVCをてきとーにまとめ。

この場合のてきとーは、適当ではなく、「いいかげん」のてきとーです。
「いい加減」の意味でもありません。実にざっくりな感じです(=ω=)


チュートリアルをすすめて、Postの追加・編集・削除まで行なえるようになりました。
DBに該当モデルのテーブルを作成した後は、

  1. コントローラーに欲しいアクションを追加
  2. アクション用ビューを作成orアクション実行URLを適当なビューに追加

すれば良いのですね!
詳しくはマニュアルのチュートリアルを参照してください。(マテ

CakePHPのModel

MVCとは何ぞや?という方は、コチラを先にご覧下さい。
CakePHPのモデルは、DBとのやり取りを行なう場所になります。

  • テーブルを用意しておく(正式な英語の複数形)
  • app/models/テーブル名の単数形.php に定義する
  • AppModelクラスを継承
  • ”var $name” に単語の頭文字が大文字のモデル名を定義

CakePHPのView

ビューは見た目ですね。
全体の見た目はレイアウトで指定し、ここでのビューはアクション(機能)ごとになります。

  • app/views/コントローラ名/自由なファイル名.ctp に定義
    • ファイル名をアクション名と同じにしておくと、コントローラ側で明示する必要がない
  • $htmlなどを利用する

CakePHPのController

アクションを定義するところになります。
ページタイトルもコントローラーで指定します。

  • app/controllers/コントローラ名_controller.php に定義
  • AppControllerを継承
  • ”var $name”に単語の頭文字が大文字のコントローラ名を定義
  • ”var $uses”にコントローラで使用するモデルを定義
    • 複数のモデルを使用したいときは配列として列挙する
  • アクションはコントローラーのメソッドとして定義
    • アクションのURLは ”/コントローラ名/アクション名”
    • アクション名無しでアクセスしたときは、デフォルトではindexアクションが呼ばれる
      • URLでアクセスできないメソッドを作成したいときは、メソッド名の先頭に _(アンダーバー)を付ける
      • →アンダーバー無しのメソッドは、すべてURLからアクセスできてしまう
  • $this->set() はビューに値を渡すメソッド
    • 引数は (変数名, 値)
  • モデルからデータを取得するには$this->Model1->findAll()
    • 引数は (検索条件, 取得フィールド, ソート条件, etc...)
  • ページのタイトルは”$this->pageTitle”で定義


コントローラーが重くなりがちだなーと思ってみたり。
でも、MVCのつくりになっていると本当に作りやすいですね。
パーツで考えればいいので、集中できて好きです。
今後はデザイン後回しで #dekiben の機能をひとつずつ作りこんでいきたいと思います。
(というか誰かデザイン部分やってくださいませんか(マテ