How to create a field
Create file
Add a yml field file in fields directory.
layouts/
└── partials/
└── admin/
└── fields/
Simple widget
{
label: '',
name: '',
widget: '',
required: false,
i18n: true
}
List or Object widget
{{- $fields := slice
"title"
"text"
"image" -}}
# This line allows you to modify the fields via the parameters
{{- $fields = partial "admin/func/get_fields.html" (dict "block" . "fields" $fields) -}}
{
label: '',
name: '',
widget: 'object',
required: false,
i18n: true,
collapsed: true,
{{ partial "admin/fields/_fields.yml" $fields }}
}
Relation widget
Use our relation field partial .
Arguments
collection: string # collection name, required
display_fields: slice # ["title"] default, optional
filters: string # value for filtering datas, optional
name: string # name field, required
multiple: boolean # false default, optional
options: slice # list of options, required
required: boolean # false default, optional
search_fields: slice # ["title"] default, optional
Examples
In fields via get_fields:
{{- $relation := dict "relation" (dict
"collection" $collection
"name" "items"
"multiple" true
"required" true) -}}
Via partial:
{{- partial "admin/fields/relation.yml" (dict
"collection" $collection
"name" "items"
"multiple" true
"required" true) }}
Select widget
Use our select field partial .
Arguments
default: string # value name of selected item, optional
field: string # name field, required
i18n: string # target a specifc nested node in file, optional
multiple: boolean # false default, optional
options: slice # list of options, required
required: boolean # false default, optional
Examples
In fields via get_fields:
{{- $select := (dict "select" (dict
"field" "align"
"options" (slice "start" "center" "end")
"required" false
)) }}
Via partial:
{{- partial "admin/fields/select.yml" (dict
"field" "align"
"options" (slice "start" "center" "end")
"required" false
) }}
Add or remove fields in object field
/config/_default/params.yaml
In this example, we set two fields (title and text with markdown) for the Hero field.
params:
admin:
fields:
# Array of available fields for a fields
# e.g with hero field
hero:
- title
- text_markdown