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

概要

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

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

MVCモデルとは?

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

【解説】MVCモデルとは?メリット・デメリット
MVCモデルとは「Model」「View」「Controller」の3つに分けてコードを管理するシステム開発においての設計方針になります。このモデルにはシステムの保守性や生産性の向上を図ることができるというメリットがあります。システム開発の外注をご検討されている方に向けて、「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コマンドについては、下記外部サイト様をご参照ください。

【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をコピーしました