スポンサーリンク

AdminBakerプラグインの詳細について

※2022年5月現在の情報になります。

AdminBakerプラグインを使ってできること

ログイン機能、アカウント管理機能を持つCakePHP4製のCMSに、ユーザーがGUIツールで定義した設定を元に機能を追加していくことができます。
GUIツール上でlg~smサイズのグリッドレイアウトの画面イメージを見ながら機能を作りこむことができます。

2022/5追記
既存の機能に加えてSwaggerに対応しました。
具体的にはzircote/swagger-phpのバージョン3に準拠したAPIドキュメント付きのAPIコントローラをadmin以外のプレフィックス以下に生成できるようになりました。
詳しくはこちら
↓GUIツールのイメージ
↓実際に生成された画面
CMSについて
  • 二段階認証を使用したログインをサポート
  • 追加する一般ユーザーについて権限管理機能付き
    • 権限は読込/書込/削除の他、CSVエクスポート/CSVインポート/Excelエクスポート/Excelインポートの制御が可能
    • 各権限は機能ごとに設定可能
AdminBakerプラグインの特徴
  • 使用可能な最小のシステム要件が厳しめ
    • PHPは8.0以降
      • PHP8で追加された文字列関数やヌル安全オペレータを使用しているため
    • MySQLは5.7.8以降
      • jsonカラムに対応してる必要があるため
  • 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でのエクスポート/インポートには対応していません。
タイトルとURLをコピーしました