概要
MVCモデルにおいてModelで取得したデータを、View(表示)に渡すのが主な役割になります。
CakePHPでウェブサービスを作る際には、もっともよく触る箇所のひとつです。
MVCモデルとは?
下記外部ページ様をご参照ください。
Modelとは?
CakePHPにおいてDBからデータを取得するためのプログラムが記載されています。
以下のページをご参照ください。
初期ディレクトリ構造
Component
Controllerで使う関数を定義します。
以下のページをご参照ください。
AppController.php
全Controllerで共通の処理を定義します。
ErrorsController.php
errorハンドリンングを行います。
エラー時に表示するページの設定等はこのファイルで可能です。
PagesController.php
DBと連携しないページ(静的ページ)の設定を行います。
DBと連携するControllerの生成
ControllerとDB
先述のPagesControllerは静的ページ(DBと連携しないページ)のControllerでした。
しかし、わざわざCakePHPを使うからには、普通はDBと連携するページの方が多くなります。
そのようなページのControllerはbakeコマンドを使って自分で作る必要があるのです。
bakeコマンドでControllerを作る。
下記のようなデータ「Users」と連携する、UsersControllerを作ってみましょう。
ターミナルからsshアクセスして下記のコマンドを叩きます。
bin/cake bake controller Users
これでデータUsersControllerができます。
※bakeコマンドについては、下記外部サイト様をご参照ください。
UsersControllerの中身
UsersControllerの中身を、一部抜粋してみてみましょう。
//一部抜粋
class UsersController extends AppController
{
/**
* Index method
*
* @return \Cake\Http\Response|null|void Renders view
*/
//templates/users/index.php
public function index()
{
//DBからusersテーブルの値を取得する
$users = $this->paginate($this->Users);
//View(templatesに渡す)
$this->set(compact('users'));
}
コントローラ内で定義する関数の名前によって、描画するテンプレートのパスが決まります。(コード11行目)。
上記の場合は、templates/users/index.phpでViewを描画するわけです。
次に、DBからusersテーブルの情報を取得して(14行目)、Viewに渡します(16行目)。
このコードによって「Modelから取得したデータをViewに渡す」というControllerの機能を実装できるわけです。
参考
CakePHP公式:Controller
コメント