Stiamo introducendo un nuovo type: objects per i tipi supportati per le impostazioni del tema che può essere utilizzato per sostituire l’attuale tipo json_schema che intendiamo deprecare presto.
Definire un’impostazione del tema di tipo oggetti
Per creare un’impostazione del tema di tipo oggetti, definire prima una chiave di livello superiore come qualsiasi impostazione del tema che verrà utilizzata come nome dell’impostazione.
links: ...
Successivamente, aggiungere le parole chiave type, default e schema all’impostazione.
links:
type: objects
default: []
schema: ...
type: objects indica che questa sarà un’impostazione di tipo oggetti mentre l’annotazione default: [] imposta il valore predefinito dell’impostazione su un array vuoto. Si noti che il valore predefinito può anche essere impostato su un array di oggetti che dimostreremo una volta definito lo schema.
Per definire lo schema, definire prima il name dello schema in questo modo:
links:
type: objects
default: []
schema:
name: link
Successivamente, aggiungeremo la parola chiave properties allo schema che ci permetterà di definire e convalidare l’aspetto di ciascun oggetto.
links:
type: objects
default: []
schema:
name: link
properties:
name: ...
Nell’esempio sopra, stiamo affermando che l’oggetto link ha una proprietà name. Per definire il tipo di dati atteso, ogni proprietà deve definire la parola chiave type.
links:
type: objects
default: []
schema:
name: link
properties:
name:
type: string
La definizione dello schema sopra afferma che l’oggetto link ha una proprietà name di tipo string, il che significa che solo valori stringa saranno accettati per la proprietà. Attualmente i seguenti tipi sono supportati:
string: Il valore della proprietà viene memorizzato come stringa.integer: Il valore della proprietà viene memorizzato come intero.float: Il valore della proprietà viene memorizzato come float.boolean: Il valore della proprietà ètrueofalse.enum: Il valore della proprietà deve essere uno dei valori definiti nella parola chiavechoices.links: type: objects default: [] schema: name: link properties: name: type: enum choices: - name 1 - name 2 - name 3categories: Il valore della proprietà è un array di ID di categoria validi.groups: Il valore della proprietà è un array di ID di gruppo validi.tags: Il valore della proprietà è un array di nomi di tag validi.
Con lo schema definito, il valore predefinito dell’impostazione può ora essere impostato definendo un array in yaml in questo modo:
links:
type: objects
default:
- name: link 1
title: link 1 title
- name: link 2
title: link 2 title
schema:
name: link
properties:
name:
type: string
title:
type: string
Proprietà richieste
Tutte le proprietà definite sono facoltative per impostazione predefinita. Per contrassegnare una proprietà come richiesta, è sufficiente annotare la proprietà con required: true. Una proprietà può anche essere contrassegnata come facoltativa annotandola con required: false.
links:
type: objects
default: []
schema:
name: link
properties:
name:
type: string
required: true
title:
type: string
required: false
Validazioni personalizzate
Per determinati tipi di proprietà, è disponibile il supporto integrato per validazioni personalizzate che possono essere dichiarate annotando la proprietà con la parola chiave validations.
links:
type: objects
default: []
schema:
name: link
properties:
name:
type: string
required: true
validations:
min: 1
max: 2048
url: true
Validazioni per tipi string
min_length: Lunghezza minima della proprietà. Il valore della parola chiave deve essere un intero.max_length: Lunghezza massima della proprietà. Il valore della parola chiave deve essere un intero.url: Valida che la proprietà sia un URL valido. Il valore della parola chiave può esseretrue/false.
Validazioni per tipi integer e float
min: Valore minimo della proprietà. Il valore della parola chiave deve essere un intero.max: Valore massimo della proprietà. Il valore della parola chiave deve essere un intero.
Validazioni per tipi tags, groups e categories
min: Numero minimo di record per la proprietà. Il valore della parola chiave deve essere un intero.max: Numero massimo di record per la proprietà. Il valore della parola chiave deve essere un intero.
Struttura di oggetti annidati
Un oggetto può anche avere una proprietà che contiene un array di oggetti. Per creare una struttura di oggetti annidati, una proprietà può anche essere annotata con type: objects e la definizione dello schema associato.
sections:
type: objects
default:
- name: section 1
links:
- name: link 1
url: /some/url
- name: link 2
url: /some/other/url
schema:
name: section
properties:
name:
type: string
required: true
links:
type: objects
schema:
name: link
properties:
name:
type: string
url:
type: string
Descrizione dell’impostazione e localizzazione
Per aggiungere una descrizione per l’impostazione nella locale en, creare un file locales/en.yml con il seguente formato data la seguente impostazione del tema di tipo oggetti.
sections:
type: objects
default:
- name: section 1
links:
- name: link 1
url: /some/url
- name: link 2
url: /some/other/url
schema:
name: section
properties:
name:
type: string
required: true
links:
type: objects
schema:
name: link
properties:
name:
type: string
url:
type: string
en:
theme_metadata:
settings:
sections:
description: This is a description for the sections theme setting
schema:
properties:
name:
label: Name
description: The description for the property
links:
name:
label: Name
description: The description for the property
url:
label: URL
description: The description for the property
Questo documento è controllato in versione - suggerisci modifiche su github.



