Skip to content

Fields

Identificabili come le colonne di una datatable, mappano il valore dato in input (ovvero quello salvato nella colonna del DB) a seconda del tipo scelto. Quelli già definiti, quindi generici, sono:

Ognuno di essi ha come parametri (in ordine):

ParametroTipoDescrizione
$fieldstringNome della colonna sul DB (oppure altro se la logica è custom)
$labelstringNome della colonna mostrata sul Frontend
$idstringPuò anche non essere dichiarato, ma attenzione: in quel caso poi sarà uguale a $field

BooleanField

php
BooleanField::make('manual', __('Manuale'))

ConcatField

php
ConcatField::make('full_name', __('Nome'))->values([
                TextField::make('last_name')->hidden(),
                ' ',
                TextField::make('first_name')->hidden(),
            ]),

Nel metodo values() è necessario passare tutti i Fields che si vuole concatenare.

DatasetField

php
DatasetField::make('document_type', __("Tipo Documento"))
                ->values(User::datasetStatus())

Nel metodo values() è necessario passsare l'array che mappa il dataset della colonna. Ponendo che il tipo di documento registrato sul DB abbia il valore di 10, bisognerà mappare l'array (ritornato in un metodo apposito oppure scriverlo direttamente) seguendo questa linea (inserendo anche gli altri valori qualora ci siano):

php
[
    [
        "value" => 10,
        "text" => __("Carta d'Identità")
    ],
    [
        "value" => 11,
        "text" => __("Codice Fiscale")
    ],
]

Il risultato in terfaccia sarà ciò che è scritto alla chiave text del valore (value) corrispondente.

DateField

php
DateField::make('date', __('Data'))

DateTimeField

php
DateTimeField::make('created_at', __('Registrato Il')),

JsonArrayField

php
JsonArrayField::make('roles', 'Ruoli')

NumberField

php
NumberField::make('part_time_hours', __('Ore part-time'))

TextField

php
NumberField::make('first_name', __('Nome')),

TimeField

php
DateTimeField::make('created_at', __('Registrato Alle')),

Custom Field

E' possibile creare un Field "personalizzato" qualora servisse applicare o ricavare un dato con una particolare logica. Per realizzarlo basta creare una nuova classe in app/Http/Datatables/Fields ed estendere CustomField oppure un Field già esistente.

Metodi implementabili

customvalue($model)

In questo metodo avremmo disponibile il Model della risorsa, dal quale fare tutto il necessario per far uscire l'output desiderato. Esempio:

php
public function customValue($model)
{
    /** @var $model User */
    return $model->roles()
                ->pluck("name")
                ->implode(", "); /** Amministratore, Manager */
}

customfilter()

Instanziare una nuova classe di tipo filtro nel caso in cui si voglia filtrare con una logica definita.

Proprietà della Classe

ParametroTipoDescrizione
$useCustomValueboolIndica se il metodo customValue() va utilizzato
$useCustomFilterboolIndica se il metodo customFilter() va utilizzato
$advancedFilterboolDa includere nei filtri avanzati della Datatable
$globalFilterboolDa includere nel filtro globale della Datatable (textbox in alto a DX)
$sortableboolRende la colonna generata ordinabile
$hiddenboolDa escludere in visualizzazione (ma magari utilizzabile per filtrare)
$exportboolDa includere nell'export

N.B. queste proprietà possono essere passate anche via metodo a qualsiasi Field esistente (es. ...->hidden(true))