CakePHPの初期ディレクトリ構造から、各ファイルの役割を解説する【CakePHP4】④src/controller

概要

MVCモデルにおいてModelで取得したデータを、View(表示)に渡すのが主な役割になります。

CakePHPでウェブサービスを作る際には、もっともよく触る箇所のひとつです。

MVCモデルとは?

下記外部ページ様をご参照ください。

【解説】MVCモデルとは?メリット・デメリット
MVCモデルとは「Model」「View」「Controller」の3つに分けてコードを管理するシステム開発においての設...

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コマンドについては、下記外部サイト様をご参照ください。

【CakePHP入門】bakeの使い方 | 侍エンジニアブログ
この記事では「 【CakePHP入門】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

コメント

タイトルとURLをコピーしました