FieldTrait
テンプレート出力固有の処理を担うトレイト。
Field の構造化(フィールドキーの分類・グループ展開・型自動変換・バリデーション結果の上乗せ) は Field 本体の toStructured() に委譲する。本トレイトの責務は次の 3 つに限る:
- メディア・リッチエディタ・ブロックエディタの注入(Template Service への依存)
- path フィールドの URL 解決 / html フィールドの絶対化(Common Service への依存)
- テンプレート側で元 Field を取り回すための takeover キー(acmsSerialize で保存)
これらは Field 本体に持ち込むと階層違反になるため、トレイト側に残す。
Table of Contents
Methods
- buildFieldTrait() : array<string|int, mixed>|null
- フィールドを連想配列として組み立て
- resolveTemplateUrlsTrait() : array<string|int, mixed>
- toStructured の出力に対し、path フィールドの URL 解決と html フィールドの 絶対化(テンプレート出力固有)を適用する。
- resolveTemplateUrlsInGroupRowTrait() : array<string|int, mixed>
- グループ内の 1 行に含まれるマルチ項目(連想配列構造)に対して URL 解決を適用。
- resolveTemplateUrlsInMultiEntryTrait() : array<string|int, mixed>
- マルチ項目フィールドエントリ('value'/'array' を持つ)に対して URL 解決を適用。
Methods
buildFieldTrait()
フィールドを連想配列として組み立て
protected
buildFieldTrait(Field|Field_Validation $field[, string|null $scp = null ]) : array<string|int, mixed>|null
Parameters
- $field : Field|Field_Validation
- $scp : string|null = null
-
子フィールドとして再帰したときの名前(takeover キーの prefix に使う)
Return values
array<string|int, mixed>|null —フィールドが空の場合は null
resolveTemplateUrlsTrait()
toStructured の出力に対し、path フィールドの URL 解決と html フィールドの 絶対化(テンプレート出力固有)を適用する。
protected
resolveTemplateUrlsTrait(array<string|int, mixed> $data, Field|Field_Validation $field) : array<string|int, mixed>
- マルチ項目フィールド (['value' => {...}, 'array' => [...]]) の中の path / html
- グループ内マルチ項目(連番キーの行配列の中の各 baseName)の path / html
単一値フィールドや、グループ内単一値フィールドには URL 解決を適用しない(旧挙動)。
Parameters
- $data : array<string|int, mixed>
- $field : Field|Field_Validation
Return values
array<string|int, mixed>resolveTemplateUrlsInGroupRowTrait()
グループ内の 1 行に含まれるマルチ項目(連想配列構造)に対して URL 解決を適用。
private
resolveTemplateUrlsInGroupRowTrait(array<string|int, mixed> $row, Field|Field_Validation $field) : array<string|int, mixed>
グループ内単一値は ['value' => x] の形なのでスキップ。 グループ内マルチ項目は ['alt' => x, 'path' => y, ...] の形。
Parameters
- $row : array<string|int, mixed>
- $field : Field|Field_Validation
Return values
array<string|int, mixed>resolveTemplateUrlsInMultiEntryTrait()
マルチ項目フィールドエントリ('value'/'array' を持つ)に対して URL 解決を適用。
private
resolveTemplateUrlsInMultiEntryTrait(array<string|int, mixed> $entry, string $baseName, Field|Field_Validation $field) : array<string|int, mixed>
Parameters
- $entry : array<string|int, mixed>
- $baseName : string
- $field : Field|Field_Validation