【市場価値がわかる】エンジニア転職におすすめなサイト

cakephp4でコントローラーの作成手順!コントローラーの特徴も解説

cakephp4コントローラー

cakePHP4でコントローラーを作成するにはどうすればいいんだろう…

こんな疑問を解決します。

この記事では、cakePHP4でコントローラーを作成手順やcakePHP4のコントローラーの機能なども紹介しています。

ぜひ最後までご確認ください。

【開発環境】
PHP8
cakePHP4

Contents

コントローラーをbakeコマンドで作成する

  • コントローラーを作成する基本コマンド
$ bin/cake bake controller コントローラー名

ex.
$ bin/cake bake controller items

src > Controller配下にItemsController.phpが作成されます。

コントローラー名は、モデルの複数形、テーブル名と一致させる必要があります。

  • ディレクトリを作成しつつ、コントローラーを作成する
$ bin/cake bake controller コントローラー名 --prefix

ex.
$ bin/cake bake controller items --prefix User

src > Controller配下にUserフォルダを作りつつ、ItemsController.phpが作成されます。

【以下実行内容】
src
– Controller
-User
– ItemsController.php

  • CRUDアクションは生成させないでコントローラーを作成
$ bin/cake bake controller コントローラー名 --no-actions

ex.
$ bin/cake bake controller items --no-actions

通常のコントローラー作成だと、indexアクションやeditアクションなども一緒に作成されます。

しかし、–no-actionsをつけると、CRUDアクションは生成されずにコントローラーを作成できます。

<?php
declare(strict_types=1);

namespace App\Controller;

/**
 * Items Controller
 *
 * @property \App\Model\Table\ItemsTable $Items
 */
class ItemsController extends AppController
{
}

cakePHP4でおさえるべきコントローラーの特徴

cakePHP4は、コントローラーのアクション名とtemplatesのファイル名を一致させれば、コントローラーが自動でビューをレンダリングします。

例えば、src > Controller > ItemsController.phpを作成し、templates > Items > index.phpを作成します。
ItemsController.phpにindexアクションを書きます。わざわざコントローラーでItems > index.phpを呼ぶ処理を書かなくても、cakeが自動でビューファイルを認識してくれます。
(コントローラーのアクション名とテンプレートのフォルダ名とファイル名が一致していればの話)

コードで書くとこんな感じ

<?php
declare(strict_types=1);

namespace App\Controller;

/**
 * Items Controller
 *
 * @method \App\Model\Entity\Item[]|\Cake\Datasource\ResultSetInterface paginate($object = null, array $settings = [])
 */
class ItemsController extends AppController
{
    /**
     * Index method
     *
     * @return \Cake\Http\Response|null|void Renders view
     */
    public function index()
    {
    }
}
<h1>hello</h1>

/items/indexにアクセスすると、helloの文字が表示される。

/コントローラー名(Controllerはいらない)/アクション名

コントローラーからビューに変数を渡す

cakePHP4でコントローラーからビューに変数を渡すには、set関数かset関数+compact関数を使います。
※個人的にはset関数+compact関数の方を推奨です。(記述量が少ないから)

set関数を使う場合

    public function index()
    {
        $user = "ユーザーです";
        $item = "itemです";

        $this->set([
            'user' => $user,
            'item' => $item,
        ]);
    }

set関数+compact関数を使う場合

    public function index()
    {
        $user = "ユーザーです";
        $item = "itemです";

        $this->set(compact(
            'user',
            'item',
        ));
    }

ビュー

<?= $user ?>
<br>
<?= $item ?>

画面には、

ユーザーです
itemです

と表示されます。

>>転職するのにおすすめのサイトはこちらをクリック
>>副業で稼ぐためにおすすめのサイトはこちらをクリック

スキルを売り買いするならココナラ

オンライン動画学習ならUdemy

コメント

コメントする

CAPTCHA


Contents
閉じる