Azukiで出来る基本的な内容は以下の項目でまとめています
機能の拡張や変更をする際に実装を最小限とするため、
既存のクラスを継承した新しいクラスを作成し必要な実装のみ行うことを推奨しています。
Azukiシステムでは、システム内で使用しているクラスの実体を簡単に差し替え出来るようにしています
実体の差し替えはazuki.app.php
ファイルで定義できます
キー | 初期クラス | 備考 |
---|---|---|
--コントローラ-- | ||
controllers.system.index | \Azuki\App\Http\Controllers\System\IndexController | システム管理ダッシュボード画面 |
controllers.system.login | \Azuki\App\Http\Controllers\System\LoginController | システム管理ログイン画面 |
controllers.system.profile | \Azuki\App\Http\Controllers\System\ProfileController | システム管理プロフィール画面 |
controllers.system.directors | \Azuki\App\Http\Controllers\System\DirectorsController | システム管理者管理画面 |
controllers.system.managers | \Azuki\App\Http\Controllers\System\ManagersController | システム管理サイト管理者管理画面 |
controllers.system.users | \Azuki\App\Http\Controllers\System\UsersController | システム管理ユーザー管理画面 |
controllers.system.systemroles | \Azuki\App\Http\Controllers\System\SystemRolesController | システム管理ロール管理画面 |
controllers.system.organizations | \Azuki\App\Http\Controllers\System\OrganizationsController | システム管理組織管理画面 |
controllers.system.accesslogs | \Azuki\App\Http\Controllers\System\AccessLogsController | システム管理アクセスログ画面 |
controllers.system.loginlogs | \Azuki\App\Http\Controllers\System\LoginLogsController | システム管理ログインログ画面 |
controllers.system.operationlogs | \Azuki\App\Http\Controllers\System\OperationLogsController | システム管理操作ログ画面 |
controllers.system.systemlogs | \Azuki\App\Http\Controllers\System\SystemLogsController | システム管理システムログ画面 |
controllers.system.eqs | \Azuki\App\Http\Controllers\System\ExecuteQueueStatusController | システム管理コマンド実行状況画面 |
controllers.system.resetpassword | \Azuki\App\Http\Controllers\System\ResetPasswordController | システム管理パスワードリセット機能 |
controllers.system.fileupload | \Azuki\App\Http\Controllers\System\FileUploadController | システム管理ファイルアップロード機能 |
controllers.manage.index | \Azuki\App\Http\Controllers\Manage\IndexController | サイト管理ダッシュボード |
controllers.manage.login | \Azuki\App\Http\Controllers\Manage\LoginController | サイト管理ログイン画面 |
controllers.manage.profile | \Azuki\App\Http\Controllers\Manage\ProfileController | サイト管理プロフィール画面 |
controllers.manage.managers | \Azuki\App\Http\Controllers\Manage\ManagersController | サイト管理サイト管理者管理画面 |
controllers.manage.users | \Azuki\App\Http\Controllers\Manage\UsersController | サイト管理ユーザー管理画面 |
controllers.manage.sample | \Azuki\App\Http\Controllers\Manage\SampleController | サイト管理サンプル画面 |
controllers.manage.eqs | \Azuki\App\Http\Controllers\Manage\ExecuteQueueStatusController | サイト管理コマンド実行状況画面 |
controllers.manage.resetpassword | \Azuki\App\Http\Controllers\Manage\ResetPasswordController | サイト管理パスワードリセット機能 |
controllers.manage.fileupload | \Azuki\App\Http\Controllers\Manage\FileUploadController | サイト管理ファイルアップロード機能 |
controllers.common.index | \Azuki\App\Http\Controllers\Common\IndexController | フロントトップ画面 |
controllers.common.login | \Azuki\App\Http\Controllers\Common\LoginController | ユーザーログイン画面 |
controllers.common.mypage | \Azuki\App\Http\Controllers\Common\MypageController | マイページ |
controllers.common.regist | \Azuki\App\Http\Controllers\Common\RegistController | ユーザー登録画面 |
controllers.common.resetpassword | \Azuki\App\Http\Controllers\Common\ResetPasswordController | ユーザーパスワードリセット機能 |
controllers.common.uploadfileview | \Azuki\App\Http\Controllers\Common\UploadedFileViewController | アップロードファイル閲覧機能 |
--モデル-- | ||
models.directors | \Azuki\App\Models\Directors | システム管理者モデル |
models.managers | \Azuki\App\Models\Managers | サイト管理者モデル |
models.users | \Azuki\App\Models\Users | ユーザーモデル |
models.systemroles | \Azuki\App\Models\SystemRoles | ロール管理モデル |
models.organizations | \Azuki\App\Models\Organizations | 組織モデル |
models.accesslogs | \Azuki\App\Models\AccessLogs | アクセスログモデル |
models.loginlogs | \Azuki\App\Models\LoginLogs | ログインログモデル |
models.operationlogs | \Azuki\App\Models\OperationLogs | 操作ログモデル |
models.systemlogs | \Azuki\App\Models\SystemLogs | システムログモデル |
models.eqs | \Azuki\App\Models\ExecuteTargetQueue | コマンド実行キューモデル |
models.sample | \Azuki\App\Models\Sample | サンプルモデル |
--バリデータ-- | ||
validators.system.profile | \Azuki\App\Http\Validation\System\ProfileValidator | システム管理プロフィールバリデータ |
validators.system.directors | \Azuki\App\Http\Validation\System\DirectorsValidator | システム管理システム管理者バリデータ |
validators.system.managers | \Azuki\App\Http\Validation\System\ManagersValidator | システム管理サイト管理者バリデータ |
validators.system.users | \Azuki\App\Http\Validation\System\UsersValidator | システム管理ユーザーバリデータ |
validators.system.systemroles | \Azuki\App\Http\Validation\System\SystemRolesValidator | システム管理ロール管理バリデータ |
validators.system.organizations | \Azuki\App\Http\Validation\System\OrganizationsValidator | システム管理組織管理バリデータ 共通バリデータである\Azuki\App\Http\Validation\SharedValidator::classを使っています |
validators.manage.managers | \Azuki\App\Http\Validation\Manage\ManagersValidator | サイト管理サイト管理者バリデータ |
validators.manage.users | \Azuki\App\Http\Validation\Manage\UsersValidator | サイト管理ユーザーバリデータ |
validators.manage.sample | \Azuki\App\Http\Validation\Manage\SampleValidator | サイト管理サンプルバリデータ |
validators.common.mypage | \Azuki\App\Http\Validation\Common\UsersValidator | ユーザーバリデータ |
差し替えるクラスはそれぞれ初期クラスを継承し作成してください。
フォームエレメントは各コントローラで$elements
として定義するメンバ変数で、画面のフォーム要素を構成する設定です
大きく、レイアウト・フォーム項目の詳細・一覧表示の詳細を設定できます
なお、各画面ごとにどの要素をどの並び順で表示するかの設定は、$elementsOrder
メンバ変数で行います。
$elements = [
// 構成内容としては
'項目キー(一意なキー名)' => [
'layout' => [
レイアウト設定内容
],
'searchLayout' => [
検索フィールドでのレイアウト設定内容
],
'form' => [
各フォームの詳細設定
],
'list' => [
一覧表示の詳細設定
],
],
// 具体例としては
'name' => [
'form' => [
'title' => [
'size' => 3,
'type' => 'title',
'name' => 'お名前',
'required' => IS_REQUIRED,
],
'name' => [
'required' => IS_REQUIRED,
'size' => 8,
'type' => 'text',
'name' => 'name',
'column' => 'name',
'placeholder' => '大阪 太郎',
'searchName' => 'search[name]',
'searchPlaceholder' => '部分一致します',
'validate' => [
'rule' => 'required|max:36',
'rules' => [
['type' => 'required'],
['type' => 'max', 'condition' => '36'],
],
],
],
],
'list' => [
'name' => [
'type' => CONTROL_TYPE_TEXT,
'width' => '15%',
'orderable' => false,
],
],
],
];
項目キー
に対して画面構成上の1項目分を設定する構成になります。
1項目に複数のフォームがある場合、form設定部分に複数のフォーム設定を記述することになります。
その際にどのような表示レイアウトにするかを決めるのがレイアウト設定になります。
searchLayout
というキーは検索フィールド用のレイアウト指定で、フォーム画面での表示レイアウトと検索フィールドでの
表示レイアウトが違う場合に指定します。設定方法はlayout
キーでの指定方法と同様です。
layout
キーの設定を省略した場合、レイアウト設定は['title_項目キー', '項目キー']
となります。これは、単純な
項目名 |入力フォーム
のレイアウトになります。
レイアウト設定で指定された値はform
キーで設定されている必要があります。
'title_項目キー'
にはform->title
が紐づけられます。layout設定をしない限りは
項目キー->form->title
と項目キー->form->項目キー
は必須となります。
キー | 内容(設定方法) |
---|---|
key | 項目に対するlayout設定のキー名 このキー名は項目自体の表示・非表示といったコントロールに使用します キー名を設定しなければ常に表示となります。キー名が指定されている場合、 isViewRow メソッドにて表示・非表示の判定が行われます判定方法は preg_match('/.*ページ種類*/u', キー名) となり、ページ種類は['list', 'form', 'confirm']ですキー名指定した場合、原則非表示となり表示したいページ種類をキー名に含めることでそのページのみ表示されることになります |
val | レイアウト方法の指定です 基本形としては、指定した要素が横並びになります。サイズは各要素側で指定します 合計12を超えると1行に収まらないので要素単位で自動的に次行に落ちます 配列で指定すると配列で指定している要素が縦並びになります また、キー名を指定することで、縦並びになる部分のサイズ指定やGroupInputの指定ができます |
複雑なレイアウトの例として以下のような指定をすると住所の項目をレイアウトすることができます。
'password_conf' => [
'layout' => [
'key' => 'view_form', // 入力・編集画面のみ表示されるようになります
'val' => [ 'title_password_conf', 'password_conf' ],
],
],
'address' => [
'layout' => [
'val' => [
'title_address',
'row1_size_9' => [ // _size_9 の部分により、cellのサイズ9が指定されます
// GroupInputキー名により指定された配列がグループ化されて1行の要素になります
// GroupInputが複数必要な場合は、キー名にGroupInput1 GroupInput2 のように指定することが可能です
'GroupInput' => [ 'zipcode1', 'haifun', 'zipcode2', 'searchBtn'],
'pref',
'address1',
'address2',
]
],
],
'searchLayout' => [
'val' => [
'title_address',
'row1_size_9' => [
'GroupInput' => [ 'zipcode_label', 'zipcode'],
'pref',
'address1',
'address2',
]
],
],
],
address項目は上記の指定で以下のような表示になります
入力フィールドの場合
検索フィールドの場合
フォームレイアウトは基本構成は、row
、cell
、parts
のテンプレートからなり、以下のような形で構成されます
row-1
cell-1 size:3
parts
cell-2 size:8
parts
row-2
cell-1 size:3
parts
cell-2 size:8
row-2-1
cell-2-1-1 size:11
parts
row-2-2
cell-2-2-1 size:5
parts
row-2-3
cell-2-3-1 size:8
parts
parts
の部分にinput,select,textarea
といったフォームタグが展開されます
説明のための余白やマージンを設定しているので、実際とは少し違う形になります
titleキー
と要素キー
配列で構成します
項目キー->layout
の指定をしなかった場合、項目キーと同じ名前の要素キーの設定が必須になります
titleに設定できる項目は以下になります
キー | 必須・任意 | 内容(設定方法) |
---|---|---|
name | 必須 | 項目に対する名前の設定です 詳細・入力・確認画面において項目名として利用される他、一覧表示のTHで利用される名称、 共通バリデーション機能利用時のattribute値として使用されます |
size | 任意 | 表示サイズの指定です 省略した場合のデフォルト値は 3 です。CSSのクラスとしてmidium-設定値 を付けてサイズをコントロールしています |
type | 任意 | 省略した場合title になりますタイトル要素は原則としてtypeは title 固定で問題ありません他typeを使用して利用することも可能ですがその場合の説明は割愛します |
required | 任意 | IS_REQUIRED あるいはNOT_REQUIRED を指定しますIS_REQUIRED を指定すると、入力画面に[必須]マークが表示されますNOT_REQUIRED を指定すると、入力画面に[任意]マークが表示されます省略時はどちらのマークもつきません |
required_if_regist | 任意 | IS_REQUIRED あるいはNOT_REQUIRED を指定します新規登録時のみ、requiredの値をここで設定した値に置き換えることになります 新規登録時のみ必須の場合、requiredに NOT_REQUIRED を指定し、ここに IS_REQUIRED を指定します |
required_if_edit | 任意 | IS_REQUIRED あるいはNOT_REQUIRED を指定します編集時のみ、requiredの値をここで設定した値に置き換えることになります 編集時のみ必須の場合、requiredに NOT_REQUIRED を指定し、ここに IS_REQUIRED を指定します |
要素キー名は任意です。ただし一意である必要があります。1つの項目設定に対して複数の要素キーを設定できます
要素キー名はlayoutで指定されることで画面上に表示される対象となります
要素キーに設定できる項目は以下になります
キー | 必須・任意 | 内容(設定方法) |
---|---|---|
name | typeにより 必須 |
フォームのname属性として使用します typeが label あるいは、button 以外の場合は必須です |
label | typeにより 必須 |
表示名として使用します typeが label あるいは、button の場合は必須です |
size | 任意 | 表示サイズの指定です 省略した場合のデフォルト値は 8 です。CSSのクラスとしてmidium-設定値 を付けてサイズをコントロールしています |
type | 必須 | 要素のタイプを文字列で指定します
input type="タイプ名" として処理されます( text のテンプレートファイルを使用)/resources/vendor/azuki/layouts/parts/share/layout-parts-form/field-タイプ名.blade.php としてテンプレートファイルを作成することでタイプを増やす・テンプレートを変更することが可能です 汎用ではありませんが、本システムでは上記以外に serialize-array system-role-authorities を使っていますまた、 file-upload wisywig を作成中です |
column | typeにより 必須 |
紐づくDBテーブルのカラム名を指定します validateのキー名もnameの値ではなくこの値を使っています。 存在しないカラム名を指定してもModelクラスのfillで排除されるため原則問題ありません 登録・編集画面で利用するフォーム要素(label。buttonを除く)については必須項目になります 登録はしないが、条件判定などに使用したい要素がある場合、存在しないカラム名で要素定義を行うことで可能になります |
select | typeにより 必須 |
select radio checkbox の場合必須ですここで指定された文字列に対応するマスターデータを使って自動的に選択肢を構成します 共通バリデーションを使う場合、validateに自動的に in 条件が付加されます |
required | 任意 | IS_REQUIRED あるいはNOT_REQUIRED を指定しますIS_REQUIRED の場合、フォーム要素のタグにrequired aria-required="true" 属性が付加されますtypeが text textarea select datetime で有効です |
required_if_regist | 任意 | IS_REQUIRED あるいはNOT_REQUIRED を指定します新規登録時のみ、requiredの値をここで設定した値に置き換えることになります 新規登録時のみ必須の場合、requiredを未設定にするか NOT_REQUIRED を指定し、ここに IS_REQUIRED を指定します |
required_if_edit | 任意 | IS_REQUIRED あるいはNOT_REQUIRED を指定します編集時のみ、requiredの値をここで設定した値に置き換えることになります 編集時のみ必須の場合、requiredを未設定にするか NOT_REQUIRED を指定し、ここに IS_REQUIRED を指定します |
default | 任意 | 新規登録時のデフォルト値を設定します フォームの入力値として初期設定値が必要な場合に使用します 初期設定「無効」にしたいradioボタンなど |
defString | 任意 | 未設定の場合に画面上に表示したい文字列を指定範囲をキーとした連想配列で設定します 例)パスワードを詳細画面では[********]として、変更がない場合の確認画面では[変更なし]と表示したい場合 "detail" => "********", "confirm" => "変更なし" と設定することで実現できます。指定範囲は["form"、"detail"、"confirm"]を指定できます |
placeholder | 任意 | プレースフォルダーに表示したい内容を設定します |
searchType | 任意 | 検索フィールド構成時にタイプが変わる場合、ここに記述します type:radioの場合、検索フィールドでは複数選択したいことが多くその場合、この値として checkbox とすることで入力・編集時はラジオボタン、検索フィールドはチェックボックスにすることができます |
searchName | 任意 | 検索フィールドのname属性を上書きしたい場合に指定します 検索フィールドのname属性はsearch[xxxx]という形式の名前にする必要があります typeが title label button 以外の場合、検索フィールド構成時は自動的に上記の形に置き換えますname値がemailだった場合、 search[email] に変換します |
searchPlaceholder | 任意 | 検索フィールド時にplaceholder値を上書きする必要がある場合、ここで指定します |
searchXxxxxx | 任意 | 検索フィールド時のみ設定したい設定値、上書き設定したい設定値は上述のsearchType searchName などのようにsearch設定名 という形の設定名で指定することができます。 |
helperText | 任意 | 要素の下部に表示したい補足説明を設定します 「※8文字以上16文字以内の英数大文字小文字記号のみ」など |
event | 任意 | typeがbutton の場合に指定できますボタン押下時になどボタン操作に対してイベントを登録したい場合に使用します 例)'onClick' => "AjaxZip3.zip2addr('zipcode1', 'zipcode2', 'pref', 'address1', 'address2')" にてクリック時にAjaxZipをコールすることができます |
ufType | typeにより 必須 |
アップロードのタイプを指定します typeが image-upload やmovie-upload などのアップロード系の処理の場合に指定が必要ですconfig/azuki.upload_file にて設定しているタイプから該当するタイプを文字列で指定します |
isMulti | 任意 | 複数ファイルの同時アップロードの可否を[trueまたはfalse]で指定します。 typeが image-upload やmovie-upload などのアップロード系の処理の場合に指定できますtrueの場合、選択ボタンがmultipleになり、複数選択が可能になります |
validate | 任意 | 共通バリデーターを利用する際の設定を行います 詳細な設定方法は後述します |
キー | 必須・任意 | 内容(設定方法) |
---|---|---|
attribute | 任意 | 属性値の設定が必要な場合に配列で設定します 未設定の場合、 form->title->name が自動的に設定されますまた、ここで設定する配列のキー名は form->要素キー->column が自動的に補完されます例)要素キーが'address'の時、'attribute' => ['*.zip' => '郵便番号', '*.pref' => '都道府県'] と設定されていた場合、'attribute' => [ 'address.*.zip' => '郵便番号', 'address.*.pref' => '都道府県' ] と設定されます validatorクラス側で設定されているものについては上書きされません |
message | 任意 | エラーメッセージの設定が必要な場合に配列で設定します また、ここで設定する配列のキー名は form->要素キー->column が自動的に補完されます例)要素キーが'address'の時、'message' => ['*.zip.reg' => '郵便番号の形式が不正です'] と設定されていた場合、'message' => [ 'address.*.zip.reg' => '郵便番号の形式が不正です' ] と設定されます validatorクラス側で設定されているものについては上書きされません |
rules | 任意 | 配列で指定します。指定した配列分だけ'バリデーションキー名' => [rule:condition] としてバリデーションルールが構成されます'バリデーションキー名' は原則として、form->要素キー->column が設定されます指定できる項目は以下となります
getValidateTypeタイプ名 というメソッドを作成すると、そのメソッドを呼び出して条件を作成します また、ruleTypeを指定するとルール名がここで指定された名前になります uniqueバリデーションをしたい場合に、条件作成に別途 getValidateTypeLogin というメソッドを作りtype=>login, ruleType=>uniqueと指定することで、['unique:getValidateTypeLoginで作成された条件']という形で バリデーションルールを構成できます optionsは getValidateTypeタイプ名 に引数として渡されます。ルール作成に必要な追加設定を自由に構成しますflowは配列で指定すると複数のflowに対応できます 具体的な使い分けとしては、パスワードのバリデーションとして、 ['type' => 'required', 'flow' => 'regist'], ['type' => 'nullable', 'flow' => 'edit'], と指定すれば、新規登録時は必須。更新時は任意となります keyに指定した内容は form->要素キー->column が自動的に補完されます |
list
キーの設定で一覧表示時にその要素をどう表示するかを設定します。
一覧表示がない要素の場合、この設定は省略できます。
なお、ひとつのlist
キー設定に複数の項目の設定をすることも可能ですので、一覧に関する設定のみをまとめて
要素記述することも可能です。
ただし、その場合は要素の補完が出来ないため必要なすべての設定値の記述が必要になります
キー | 必須・任意 | 自動補完 | 内容(設定方法) |
---|---|---|---|
title | 必須 | 〇 | ヘッダタイトルです。指定がない場合、form->title->name で自動補完されます |
column | 必須 | 〇 | 対応するデータのカラム名です。指定がない場合、form->[項目キー]->column で自動補完されます |
type | 必須 | × | 以下のいずれかを指定
|
width | 必須 | × | thの幅指定。thタグのwidth属性にそのまま指定されるので、10% のように指定しますブラウザがよきに計らうため指定の通りになるとは限りません |
select | typeにより 必須 |
〇 | typeが[CONTROL_TYPE_SELECT]の場合必須です。指定がない場合、form->[項目キー]->select で自動補完されます設定がなく、補完もできなかった場でもエラーにはなりません |
format | 任意 | × | CONTROL_TYPE_DATEあるいは、CONTROL_TYPE_DATETIMEの時、ここで任意のフォーマットを指定できます 指定できるのはdateメソッドに対応したフォーマット文字列です |
orderable | 任意 | × | この項目での並び替えを有効にする場合はtrueを、無効にする場合はfalseを指定します。指定自体がない場合はfalseになります trueにした場合、並び替えのためのアイコンが表示され並び替えが出来るようになります 対象のカラムによっては、Model側の実装が必要になる場合があります |
orderColumn | 任意 | × | 並び替えに使用するカラム名がcolumn の指定とは違うカラムの場合にここで設定します |
detailLinkable | 任意 | × | この値にtrueを指定すると、詳細画面へのリンクがつきます |
ctrl | typeにより 必須 |
× | typeが[CONTROL_TYPE_CONTROLLER]の場合必須 以下のいずれかを指定
|
CtrlSupporterクラスは初期化時に各種設定を行うことで挙動をコントロールできます
また、各種メソッドをbindし、挙動をコントロールすることができます
CtrlSupporterクラスを使うことで管理画面のような決まった構成の画面を簡単に実装できるようになっています
キー | 必須・任意 | 内容(設定方法) |
---|---|---|
templatePrefix | 任意 | テンプレートファイルのプレフィックスを指定します 画面毎にデフォルトのテンプレート名が決まっており、ここで指定した値はそのデフォルト名のプレフィックスとして使用されます デフォルトのテンプレート名はルーティングで設定したname値になっており、 list,detail,form,confirm などになりますpostの場合、本システムでは p- がつきますが、これは削除して名前判定をします例)ここで、 hoge.foo. と指定すると、一覧画面アクセス時にはresources/views/hoge/foo/list.blade.php をテンプレートとして使用します ver1.2.x以降は protected function getCtrlSuppoterTemplatePrefix() の戻り値が使用されますので、このメソッドをオーバーライドすることで操作することができます。 |
templates | 任意 | 個別にテンプレートの指定が必要な場合に設定します templatePrefixの値は補完されません 一覧画面のみ resources/views/share-list.blade.php というテンプレートファイルを使いたいといった場合、[ 'list' => 'share-list'] と指定できますまた、この設定はクロージャ―を指定することも可能です 配列のキー名は「ルーティングで設定したname値」となります ver1.2.x以降はメンバ変数 viewTemplates で定義することができます |
model | 必須 | Illuminate\Database\Eloquent\Model を継承したモデルクラスの実体を指定します本システムでは、原則としてコンストラクタで自動注入したモデルクラスをそのまま設定します |
validator | 必須 | Azuki\App\Http\Validation\Validator を継承したバリデーションクラスの実体を指定します本システムでは、原則としてコンストラクタで自動注入したバリデーションクラスをそのまま設定します |
order | 任意 | 一覧でのデフォルトの並び順を指定します ['order' => 'カラム名1|カラム名2', 'condition' => ['カラム名1' => 'desc or asc', 'カラム名2' => 'desc or asc']] 上記のような構成で指定します。 order で指定した順番にorderByを設定していきます複数の指定は「|」で区切ります。ascかdescかはconditin配列で指定します orderの指定がない場合のデフォルトはモデルクラスでの指定となり、 orderBy('id', 'desc') を設定していますver1.2.x以降はメンバ変数 viewOrder で定義することができます |
views | 必須 | ここで指定した設定はview->share に設定されますviewに渡したいパラメータを任意に設定できます 本システムで使用している項目については別途記載します ver1.2.x以降は protected function addCtrlSuppoterViews($view) にてパラメータの追加・上書きが出来ます |
キー | 必須・任意 | 内容(設定方法) |
---|---|---|
pageName | 必須 | ページ名の値です。システム的には必須ではないためテンプレート修正すれば任意となります ver1.2.x以降ではメンバ変数 pageNamePrefix で定義できます |
controller | 必須 | コントローラー名をケバブケースで指定します。URLに使用します ver1.2.x以降ではメンバ変数 controllerName で定義できます |
search_shortcut | 任意 | ショートタイプの検索フィールドを有効にする際にtrue を指定しますver1.2.x以降ではメンバ変数 searchShortcut にてtrue/falseで操作できます |
needDatetimePicker | 任意 | datetimeタイプのフォームを使用する際にtrue を指定する必要があります本設定をtrueにすることで、datetime-pickerのJS・CSSが読み込まれます ver1.2.x以降ではメンバ変数 needDatetimePicker にてtrue/falseで操作できます |
csvSettings | 任意 | CSVアップロード・ダウンロード機能を表示する際に指定します[ ufType はconfig.azuki.upload_file で、kind はconfig.azuki.execute_type で定義している値を記載します ver1.2.x以降ではメンバ変数 csvSettings で定義できます |
ctrlCondition | 任意 | 一覧に表示される編集ボタン・削除ボタンの表示をコントロールする設定です 'edit or delete' => [ 'default' => '初期値(true or false)', 'enable or disable' => '条件' ] という形で指定します 設定のパターンとしては、 [ 'default' => 'false' ] // 常に非表示 [ 'default' => 'false', 'enable' => '条件' ] // 条件に合致した場合のみ表示 [ 'default' => 'true', 'disable' => '条件' ] // 条件に合致した場合のみ非表示 になります。条件は配列で指定し、複数指定した場合はand判定されます 条件として、['id' => '1'] と指定した場合、idが1のものが対象となります 条件は完全一致のみ指定できます。〇〇以上や〇〇を含むなどの指定はできません また、ここでの指定は表示条件のみですので、処理に対する禁則の実装は別途行う必要があります ver1.2.x以降ではメンバ変数 ctrlCondition で定義できます |
任意のメソッドをbindすることができます。
アクション実装にてbindした任意のメソッドを呼び出して動作を拡張することができます
また、既存のbindメソッドをオーバーライドして挙動を変えることもできます。以下に主なbindメソッドを記載します
bindメソッドは上書きで後勝ちになります。
メソッド名 | 引数 | 戻り値 | デフォルトの処理 | 内容(設定方法) |
---|---|---|---|---|
getRouteForIndexRedirect | void | 文字列 (routeメソッドの引数として使用できるURLの名前) |
return $this->getNameListRoute(); |
インデックスアクセス時のリダイレクト先をルート名を返す処理 traitのインデックスアクションにて呼び出される getSubstituteIndexRoute メソッド内で呼び出されていますgetSubstituteIndexRoute メソッドの第一引数に指定がない場合、このメソッドの戻り値が使用されますデフォルトは return $this->getNameListRoute(); であり、一覧画面の名前を返すようになっています |
shareAsaignList | void | void | view()->share('order', $this->getOrderCondition()); |
一覧表示時のアサインの追加処理 viewメソッド呼び出しの直前で呼び出されます。並び順に関する設定をアサインしています オーバーライドする際にはこの処理もオーバーライド先で実装しておく必要があります |
shareAsaignForm | void | void | view()->share('forms', $this->forms) |
登録編集時のアサインの追加処理 viewメソッド呼び出しの直前で呼び出されます。フォームに関する設定をアサインしています オーバーライドする際にはこの処理もオーバーライド先で実装しておく必要があります |
shareAsaignConfirm | void | void | view()->share('forms', $this->forms) |
確認時のアサインの追加処理 viewメソッド呼び出しの直前で呼び出されます。フォームに関する設定をアサインしています オーバーライドする際にはこの処理もオーバーライド先で実装しておく必要があります |
shareAsaignDetail | void | void | view()->share('forms', $this->forms) |
詳細時のアサインの追加処理 viewメソッド呼び出しの直前で呼び出されます。フォームに関する設定をアサインしています オーバーライドする際にはこの処理もオーバーライド先で実装しておく必要があります |
getRedirectNameFromComplete | void | 文字列 (routeメソッドの引数として使用できるURLの名前) |
return $this->getNameListRoute(); |
登録・更新時の戻りURLを返す処理 登録・更新以外に削除などのアクション発生時に戻る先もこのメソッドの実装で変更できます デフォルトは一覧画面になるように実装されています |
getNameListRoute | void | 文字列 (routeメソッドの引数として使用できるURLの名前) |
return str_replace( strrchr( $this->urlName, '.' ) , '.list', $this->urlName ); |
一覧画面のURLを返す処理 一覧画面に紐づける名前がデフォルトの xxxxx.list 形式になっていない場合このメソッドをオーバーライドして変更することができます |
getCanonicalUrlName | void | 文字列 (routeメソッドの引数として使用できるURLの名前) |
return str_replace( '.p-', '.', $this->urlName ); |
本システムではPOSTの場合、Routeで定義する各URLに紐づく名前に対して重複を回避するためp- を付けるようになっていますGETとPSOTでURL自体は変わらないため一意なURLに対応した名前を取得する手段として本メソッドで統合しています テンプレートファイルの判定やURL単位でのセッションの管理の際に使用しています |
beforeDisplayEditForm | $id: 選択されているデータのID $post: ポストされた値 |
void | void | 編集画面表示直前でアクションメソッドより呼び出されます このタイミングで追加処理が必要な場合のためのフックポイントです |
beforeDisplayConfirm | $id: 選択されているデータのID $post: ポストされた値 |
void | void | 確認画面表示直前でアクションメソッドより呼び出されます このタイミングで追加処理が必要な場合のためのフックポイントです |
beforeRegistData | $data: 登録・更新しようとしているデータ $flow: 登録か更新か |
$data: 登録・更新するデータ |
return $data; |
データの登録・更新処理の直前で呼び出されます 画面上は操作させないデータを追加で設定するなどの処理が必要な場合にここに実装することができます |
CtrlSuppoterはコントローラー毎にインスタンスを持つ構成としているため、コントローラー毎にbindさせるメソッドの実装内容を
変更することができます
コントローラーは機能単位で持つことを基本的な構成として設計していますので、機能単位で変更できることになります