※2022年5月現在の情報になります。
AdminBakerプラグインを使ってできること
ログイン機能、アカウント管理機能を持つCakePHP4製のCMSに、ユーザーがGUIツールで定義した設定を元に機能を追加していくことができます。
GUIツール上でlg~smサイズのグリッドレイアウトの画面イメージを見ながら機能を作りこむことができます。
既存の機能に加えてSwaggerに対応しました。
具体的にはzircote/swagger-phpのバージョン3に準拠したAPIドキュメント付きのAPIコントローラをadmin以外のプレフィックス以下に生成できるようになりました。
詳しくはこちら
↓GUIツールのイメージ![]() | ↓実際に生成された画面![]() |
CMSについて
- 二段階認証を使用したログインをサポート
- 追加する一般ユーザーについて権限管理機能付き
- 権限は読込/書込/削除の他、CSVエクスポート/CSVインポート/Excelエクスポート/Excelインポートの制御が可能
- 各権限は機能ごとに設定可能
AdminBakerプラグインの特徴
- 使用可能な最小のシステム要件が厳しめ
- PHPは8.0以降
- PHP8で追加された文字列関数やヌル安全オペレータを使用しているため
- MySQLは5.7.8以降
- jsonカラムに対応してる必要があるため
- PHPは8.0以降
- bakeによって実際にソースを生成します
- プラグインで対応できない要件は自動生成後のソースを改修することで対応できます
⇒どんな要件にも対応できる - 基本的なCRUDの他、以下のようなリソースも自動生成することが可能です
- フリーワード検索
- 論理削除/物理削除
- CSVのエクスポート/インポート
- Excelのエクスポート/インポート
- 実装済みのPHPUnitテストケース
- 項目定義書(xlsx形式)
- ER図(xlsx形式)
- プラグインで対応できない要件は自動生成後のソースを改修することで対応できます
- ノーコードのウェブサービスではありません
- 自動生成したソースを動かす環境の構築やデータの管理は自分で行う必要があります
- 継続した開発が行えるよう外部のライブラリは依存管理ツールを使用しています
- PHPはcomposer、javascriptはnpmを使用します
- css、javascriptはwebpackを使用し、ソースをビルドする仕組みを構築済み
- ビルド用のコマンドはpackage.jsonに定義しているのでnpm runから呼び出し可
Swaggerについて
AdminBakerプラグインで作成した設定を元にAPIコントローラをbakeできるようになりました。
- 生成されるAPIではCMSと同じデータのCRUDが可能
- 全てのAPIはトークン(uuid)による認証が必要
- CMS上のアカウント/権限機能で発行したトークンを生成
- CMSのリソースを含むAdminプレフィックス以外であれば自由なプレフィックス以下にbake可能
- コントローラのPHPDoc部分にzircote/swagger-phpのバージョン3に準拠したAPIドキュメントを出力
- bakeの直後、生成されたAPIドキュメント一式を元にopenapi.jsonを生成
- ファイルアップロード項目のみ専用のファイル仮アップロードAPIを使用する必要あり
- ファイル仮アップロードAPIでファイルをアップロード→json形式のレスポンスを登録/更新APIで渡すことで更新する
など
↓SwaggerUIイメージ![]() | ↓SwaggerUIイメージ![]() |
↓SwaggerUIイメージ![]() | ↓APIコントローラ![]() |
入力項目について
現在20種類の項目について対応しています
以下各項目のイメージ画像と詳細
共通のオプションについて
すべての入力項目に対して以下のオプション設定が可能です
オプション名 | 概要 |
---|---|
物理名/カラム名 | MySQLDBのテーブル上での名前です 必須 |
論理名/項目名 | 入力項目の上に表示されるラベル部分のテキストを設定します 必須 |
lgサイズ | Bootstrapのグリッドシステムにおけるcol-lg-〇〇のサイズを設定します 1~12が指定可能です 必須 |
mdサイズ | Bootstrapのグリッドシステムにおけるcol-md-〇〇のサイズを設定します 1~12が指定可能です 必須 |
smサイズ | Bootstrapのグリッドシステムにおけるcol-sm-〇〇のサイズを設定します 1~12が指定可能です 必須 |
必須 | チェックを入れると必須のバリデーションチェックが行われます |
一覧 | チェックを入れると一覧画面に項目を表示します |
検索 | チェックを入れると検索フォーム内に対象の項目の検索を行う入力欄を表示します |
検索タイプ | 検索がチェックされているときにどのように検索するかを設定します 入力項目によって設定可能な値が異なります |
追加CSSクラス | 入力項目に追加したいCSSクラスを設定します |
最大文字数 | 入力項目への最大文字数を設定します 一部の入力項目では無視されます |
SwaggerAPI用の出力例 | SwaggerUIなどから確認可能なAPIドキュメントの出力例(example)を設定します 設定可能なのはテキスト/テキストエリア/数値/日付/時間/日時/カラーピッカー/自動入力付き郵便番号(郵便番号、都道府県、市区町村、町域)の11項目です |
テキスト項目
<input type=’text’>の入力欄を表示します
- MySQLテーブル上の型
- varchar(255)、text
- 設定可能な検索タイプ
- =、LIKE
テキストエリア項目
<textarea>の入力欄を表示します
- MySQLテーブル上の型
- varchar(255)、text
- 設定可能な検索タイプ
- =、LIKE
固有オプション名 | 概要 |
---|---|
テキストエリアの行数 | row属性に設定する数値を設定します |
数値項目
<input type=’number’>の入力欄を表示します
- MySQLテーブル上の型
- int、double
- 設定可能な検索タイプ
- =、>=、<=、>、<
固有オプション名 | 概要 |
---|---|
検索対象カラム | 検索専用のカラム設定を作成します |
最小値 | min属性に設定する数値を設定します |
最大値 | max属性に設定する数値を設定します |
ステップ値 | step属性に設定する数値を設定します 小数を入力した場合、MySQLテーブル上の型がdoubleとなります |
単位 | 入力項目の右側に単位のテキストを表示します |
日付項目
<input type=’text’>の入力欄を表示します
tempusdominus-bootstrap-4を使用したdatepickerを表示します
Y-m-d形式の日付文字列を取り扱います
- MySQLテーブル上の型
- date
- 設定可能な検索タイプ
- =、>=、<=、>、<
固有オプション名 | 概要 |
---|---|
検索対象カラム | 検索専用のカラム設定を作成します |
時間項目
<input type=’text’>の入力欄を表示します
tempusdominus-bootstrap-4を使用したtimepickerを表示します
HH:mm:ss形式の時間文字列を取り扱います
- MySQLテーブル上の型
- time
- 設定可能な検索タイプ
- =、>=、<=、>、<
固有オプション名 | 概要 |
---|---|
検索対象カラム | 検索専用のカラム設定を作成します |
日時項目
<input type=’text’>の入力欄を表示します
tempusdominus-bootstrap-4を使用したdatetimepickerを表示します
Y-m-d HH:mm:ss形式の日時文字列を取り扱います
- MySQLテーブル上の型
- datetime
- 設定可能な検索タイプ
- =、>=、<=、>、<
固有オプション名 | 概要 |
---|---|
検索対象カラム | 検索専用のカラム設定を作成します |
プルダウン項目
select2を使用した入力欄を表示します
- MySQLテーブル上の型
- char(2)
- 設定可能な検索タイプ
- =
固有オプション名 | 概要 |
---|---|
選択肢情報 | selectのoption要素をタグ入力で定義します |
選択肢の初期値 | 選択肢情報で設定した選択肢のうち、初期表示で選択されていて欲しいoption要素を指定します |
ラジオボタン項目
<input type=’radio’>の入力欄を表示します
- MySQLテーブル上の型
- char(2)
- 設定可能な検索タイプ
- =
固有オプション名 | 概要 |
---|---|
選択肢情報 | input要素をタグ入力で定義します |
選択肢の初期値 | 選択肢情報で設定した選択肢のうち、初期表示で選択されていて欲しいinput要素を指定します |
チェックボックス項目
<input type=’checkbox’>の入力欄を表示します
親テーブルクラスにhasManyなアソシエーションが定義され、選択した値は子テーブルに1レコード1選択値として登録されます
- MySQLテーブル上の型
- char(2)
- 親に紐づく子テーブルを自動生成
- 設定可能な検索タイプ
- =
固有オプション名 | 概要 |
---|---|
選択肢情報 | input要素をタグ入力で定義します |
ファイル項目
bootstrap-fileinputを使用した入力欄を表示します
- MySQLテーブル上の型
- json
- 設定可能な検索タイプ
- =、LIKE
固有オプション名 | 概要 |
---|---|
最大ファイル数 | アップロード可能なファイル数を指定します |
アップロード可能な拡張子 | アップロード可能としたい拡張子をタグ入力で入力します |
サムネイル生成 | チェックした場合、アップロードされたファイルの拡張子がpng, jpg, jpeg, gifのときにサムネイル画像を生成します |
サムネイル幅 | サムネイルの横幅をpx単位で指定します |
サムネイル高さ | サムネイルの縦幅をpx単位で指定します |
アスペクト比保持 | チェックした場合、アップロードされた画像と同じ比率のサムネイルを生成します |
サムネイル品質 | サムネイルの品質を0~100の数字で指定します |
カラーピッカー項目
@simonwep/pickrを使用した入力欄を表示します
- MySQLテーブル上の型
- varchar(6)、varchar(8)
- 設定可能な検索タイプ
- =、LIKE
固有オプション名 | 概要 |
---|---|
色タイプ | RGB、RGBAのどちらでカラーピッカーを表示するするかを指定します |
カラーピッカーの初期色 | カラーピッカーを表示する際のデフォルトカラーを指定します |
GoogleMap緯度経度項目
GoogleMapの地図を表示、地図をクリックすることでマーカーを設置、マーカーを設置した位置の緯度、経度、ズームレベルを保持する項目を表示します
使用するにはGoogleMapのAPIキーが必要です
- MySQLテーブル上の型
- json
- 設定可能な検索タイプ
- なし(検索不可)
固有オプション名 | 概要 |
---|---|
GoogleMapの高さ | GoogleMapを表示するdivの高さをpx単位で指定します |
WYSIWYGテキストエリア項目
summernoteを使用した入力欄を表示します
- MySQLテーブル上の型
- longtext
- 設定可能な検索タイプ
- なし(検索不可)
固有オプション名 | 概要 |
---|---|
WYSIWYGテキストエリアの高さ | テキストエリアを表示するdiv要素の高さをpx単位で指定します |
タグ入力項目
bootstrap4-tagsinputを使用した入力欄を表示します
- MySQLテーブル上の型
- json
- 設定可能な検索タイプ
- =
外部キー項目
select2を使用した入力欄を表示します
他の機能から作成した選択肢を表示します
- MySQLテーブル上の型
- int(11)
- 設定可能な検索タイプ
- =
固有オプション名 | 概要 |
---|---|
外部キー項目設定 | 他の機能と画面表示するカラム名を指定します |
真偽値項目
select2を使用した入力欄を表示します
選択肢はtrueとfalseの2つ固定
- MySQLテーブル上の型
- tinyint(1)
- 設定可能な検索タイプ
- =
固有オプション名 | 概要 |
---|---|
真偽値の初期値 | 初期表示の際に表示されるtrue/falseを指定します |
自動入力付き郵便番号(郵便番号)項目
<input type=’text’>の入力欄を表示します
キー入力もしくは隣に表示されるボタンクリックのイベントを元に、入力した内容に一致する住所情報を取得、都道府県、市区町村、町域を他の項目に反映します
- MySQLテーブル上の型
- varchar(7)
- 設定可能な検索タイプ
- =、LIKE
固有オプション名 | 概要 |
---|---|
自動入力付き郵便番号項目の関連付け番号 | 関連付ける項目を0~4のプルダウンで指定します |
自動入力付き郵便番号項目の検索タイプ | 住所検索のタイミングをkeyup、btn_clickのプルダウンで指定します |
自動入力付き郵便番号項目の郵便番号マーク表示 | true/falseのプルダウンでtrueのとき入力欄左に郵便番号マーク(〒)を表示します |
自動入力付き郵便番号(都道府県)項目
<input type=’text’>もしくはselect2を使用した入力欄を表示します
- MySQLテーブル上の型
- varchar(255)
- 設定可能な検索タイプ
- =、LIKE
固有オプション名 | 概要 |
---|---|
自動入力付き郵便番号項目の関連付け番号 | 関連付ける項目を0~4のプルダウンで指定します |
自動入力付き郵便番号(都道府県)項目の入力タイプ | text/selectのプルダウンを表示します textを選択したとき入力欄が<input type=’text’>になります selectを選択したとき入力欄がselect2を使用したプルダウンになります |
自動入力付き郵便番号(市区町村)項目
<input type=’text’>の入力欄を表示します
- MySQLテーブル上の型
- varchar(255)
- 設定可能な検索タイプ
- =、LIKE
固有オプション名 | 概要 |
---|---|
自動入力付き郵便番号項目の関連付け番号 | 関連付ける項目を0~4のプルダウンで指定します |
自動入力付き郵便番号(町域)項目
<input type=’text’>の入力欄を表示します
- MySQLテーブル上の型
- varchar(255)
- 設定可能な検索タイプ
- =、LIKE
固有オプション名 | 概要 |
---|---|
自動入力付き郵便番号項目の関連付け番号 | 関連付ける項目を0~4のプルダウンで指定します |
子テーブルについて
作成中の機能に1:nで従属するようなデータについて、機能を分けずに同一の画面で作成することができます。
親と同じで20種類の入力項目を使用することができます。
子となるデータについて最小と最大の数を設定することができます。
子となるデータは編集画面では「+」「-」のボタンをクリックすることで動的にフォームの数を増減させる入力が可能です。
子テーブルの制約について
- 親に紐づくテーブルのためプレフィックスとして親テーブルの単数形が入ります。
- 「relations」という機能の場合、「relation_」というプレフィックスが入ります。
- 親テーブルと同様にテーブル名の末尾は複数形で入力する必要があります。
- CSVやExcelでのエクスポート/インポートには対応していません。