カラフルボックスにインストールした時のメモ。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
以降のカスタマイズは下記にて。
認証プラグイン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;