CakePHP4インストール、初期設定、AdminLTE、cakeDC/Users

カラフルボックスにインストールした時のメモ。4.4.* は安定している。
なぜだか 4.5.* にする際も4.4系でインストール後にcomposer update のほうがエラー少ない気がする。
というわけで

PHP バージョン 8.2.24
PHP CLI バージョン  8.2.24
CakePHP4 バージョン 4.4.17

目次

CakePHP4 本体インストール( 4.4.17)

php -v
    
cd [myproject-dir]

#4.4.17はレンタルサーバーで動く
composer create-project --prefer-dist cakephp/app:4.4.* .

#または以下
composer create-project --prefer-dist cakephp/app:4.4.17 .

#インストール完了したか確認
php bin/cake.php version

config/app.php

//◆65行目あたり◆  config/app.php 
'App' => [
    'namespace' => 'App',
      :
      :
    'paths' => [
        'plugins' => [ROOT . DS . 'plugins' . DS],

        //ここから2行追加◆デバッグバー追加◆
        'templates' => [ROOT . DS . 'templates' . DS],
        'locales' => [RESOURCES . 'locales' . DS],
    ],
],

//◆288行目あたり◆
'Datasources' => [
    'default' => [
        'className' => Connection::class,
        'driver' => Mysql::class,
        'persistent' => false,        
         :省略
        //◆timezone 変更◆
        // UTC を コメントアウトするだけでもOK。mariadbのデフォルトになる
        //'timezone' => 'UTC',
        //'timezone' => 'Asia/Tokyo', //これだとエラー出る
        'timezone' => '+09:00',       //これだとエラー出ない
        
        //◆追記またはコメントアウト解除◆
        'encoding' => 'utf8mb4',

         :省略
                 
        /*
         * The test connection is used during the test suite.
         */
        'test' => [
            'className' => Connection::class,
            'driver' => Mysql::class,
            'persistent' => false,
            //◆変更
            'timezone' => '+09:00',  //'timezone' => 'UTC',
            //◆追記
            'encoding' => 'utf8mb4',
            'flags' => [],
            'cacheMetadata' => true,
            'quoteIdentifiers' => false,
            'log' => false,

config/app_local.php

// \config\app_local.php 
 'Datasources' => [
        'default' => [
            'host' => 'localhost',
            //'port' => 'non_standard_port_number',

            //  ◆3行変更◆
            'username' => 'my_user_name',
            'password' => '123456',
            'database' => 'may_cake4_db',
        ],
    ],

config/bootstrap.php

cake4系で良く発生していたデバッグキット読み込みエラーの解消

// config/bootstrap.php
//  94行目付近

/*
 * When debug = true the metadata cache should only last
 * for a short time.
 */
if (Configure::read('debug')) {
    Configure::write('Cache._cake_model_.duration', '+2 minutes');
    Configure::write('Cache._cake_core_.duration', '+2 minutes');
    // disable router cache during development
    Configure::write('Cache._cake_routes_.duration', '+2 seconds');

    //◆以下2行を追加
    Configure::write('DebugKit.panels', ['DebugKit.Packages' => true]);
    Configure::write('DebugKit.safeTld', ['com','jp']);
}

CakePHP用AdminLTEテンプレート ardu/cakeLTE の導入

管理画面の定番テンプレートAdminLTE

# 先にcakeLTEいれとく 参考>> https://github.com/arodu/cakelte/tree/1.next-cake4
composer require arodu/cakelte

bin/cake plugin load CakeLte

# 設定ファイルコピー
cp vendor/arodu/cakelte/config/cakelte.php config/cakelte.php


# カスタム用ファイルコピー(このコマンドは動かないかもしれない)
bin/cake cakelte copy_file --all

# 手動コピー ディレクトリ作成
mkdir -p templates/plugin/CakeLte

# 手動コピー レイアウト
cp -r vendor/arodu/cakelte/templates/layout  templates/plugin/CakeLte

# 手動コピー テンプレートー
cp -r vendor/arodu/cakelte/templates/element templates/plugin/CakeLte

src\View\AppView.php

namespace App\View;
use Cake\View\View;

//◆追加
use CakeLte\View\CakeLteTrait;

/**
 * Application View
 */
class AppView extends View
{
    /**
     * Initialization hook method.
     */
    //◆追加
    use CakeLteTrait;
    public $layout = 'CakeLte.default';

    public function initialize(): void
    {
        //◆追加
        parent::initialize();
        $this->initializeCakeLte();
    }
}

ブラウザで確認 https://myproject.jp/cake_lte/debug

以降のカスタマイズは下記にて。

あわせて読みたい
CakePHP4にAdminLTEをプラグインで簡単導入【arodu/CakeLTE】カスタマイズ方法 CakePHP5が出ましたが、プラグインやモジュール類も安定している4系がまだまだ使いやすい。 複雑なDB結合が不要な業務系アプリやちょっとした案件はLaravelより開発速度...

認証プラグインCakeDC/Usersの導入

参考
https://blog.s-giken.net/466.html
https://github.com/cakedc/users/tree/13.next-cake4

composer require cakedc/users

#プラグインロード
bin/cake plugin load CakeDC/Users

#テーブル作成
bin/cake migrations migrate -p CakeDC/Users

#管理ユーザー作成
bin/cake users addSuperuser

#管理ユーザー作成 (ID/pass 指定)
bin/cake users add_superuser -u (ログインID) -p (パスワード) 

#オーバーライド用のユーザー設定ファイルのコピー(後で編集する)
cp vendor/cakedc/users/config/users.php  config/users.php

#オーバーライド用のパーミッション設定ファイルのコピー(後で編集する)
cp vendor/cakedc/users/config/permissions.php  config/permissions.php

#usersテーブルに対応したモデルを作成(後で編集)
bin/cake bake model users
 -- src/Model/Table/UsersTable.php
 -- src/Model/Entity/User.php
 -- tests/Fixture/UsersFixture.php
 -- tests/TestCase/Model/Table/UsersTableTest.php

cakeDC/Usersプログイン設定 src\Application.php

class Application extends BaseApplication
{
    /**
     * Load all the application configuration and bootstrap logic.
     *
     * @return void
     */
    public function bootstrap(): void
    {
        /*
         * Only try to load DebugKit in development mode
         * Debug Kit should not be installed on a production system
         */
        if (Configure::read('debug')) {
            $this->addPlugin('DebugKit');
        }

        // Load more plugins here
        //◆以下2行を追記
        $this->addPlugin('CakeDC/Users');
        Configure::write('Users.config', ['users']);

パーミッション設定の変更(config/permissions.php)

//先ほどコピーしたものを全消しして以下を追記
//または config/permissions.php を新規作成でもOK
$config = [
    'Auth' => [
        'AuthenticationComponent' => [
            'load' => true,
            'loginRedirect' => [ // ログイン後
                'plugin'     => 'CakeDC/Users',
                'controller' => 'Users',
                'action'     => 'index',
            ],
            'logoutRedirect' => [ // ログアウト後
                'plugin'     => 'CakeDC/Users',
                'controller' => 'Users',
                'action'     => 'register',
            ],
            'requireIdentity' => false,
        ],
    ],
];
return $config;

設定 /config/users.php

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次