Un Modello rappresenta un Tipo di Oggetto da amministrare all’interno dell’applicazione. Esempi di Modello possono essere un Utente, un Post o un Commento. Chi ha già lavorato con un ORM può trovare una somiglianza, ed in effetti si tratta del medesimo concetto.
|
|
A differenza di un ORM lato backend, lo scopo dei Modelli di Flamingo è non è quello di interagire con un Database, ma di fornire un sistema di comunicazione fra le API e l’interfaccia utente. |
I Modelli permettono di descrivere la struttura di un Oggetto, ad esempio per specificare che un Post è composto da un titolo, un contenuto, un autore e un insieme di commenti. Questa descrizione verrà quindi usata nel pannello di amministrazione, principalmente per due scopi:
Ottenere dalle API i record necessari alle visualizzazioni richieste
dall’utente, e decodificare la risposta. In questo caso il Model dialoga con
il Client, che si occupa delle chiamate
Ajax vere e proprie.
Mostrare all’utente i record così ottenuti nell'Interfaccia Grafica. Qui è
il turno dei Controller, che mostrano
i dati dei record e ne permettono la modifica.
Per lavorare su questi oggetti è disponibile la classe Model che deve essere
estesa per ogni Tipo presente nel nostro applicativo.
import { Model } from 'flamingo-admin';
export class Post extends Model {
// Necessari per l'interazione con le API e per i riferimenti
// interni.
static name = 'post';
static plural = 'posts';
// Verranno utilizzati per creare le label di interfaccia automaticamente.
static displayName = 'Post';
static displayPlural = 'Post';
// ...
}
Ogni Modello può definire delle colonne di default, che verranno utilizzate
per mostrare i record in tabella. Puoi trovare maggiori dettagli sulla
configurazione nella pagina dedicata alle Colonne.
export class Post extends Model {
// ...
static columns = [
{ key: 'title', dataIndex: 'title', title: 'Titolo del Post' },
{ key: 'published_on', dataIndex: 'published_on', render: (value) => <FormattedDate date={value} /> }
]
}
|
|
Inserire un esempio completo di modello. |