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:
- BooleanField
- ConcatField
- DatasetField
- DateField
- DateTimeField
- JsonArrayField
- NumberField
- TextField
- TimeField
Ognuno di essi ha come parametri (in ordine):
Parametro | Tipo | Descrizione |
---|---|---|
$field | string | Nome della colonna sul DB (oppure altro se la logica è custom) |
$label | string | Nome della colonna mostrata sul Frontend |
$id | string | Può anche non essere dichiarato, ma attenzione: in quel caso poi sarà uguale a $field |
BooleanField
BooleanField::make('manual', __('Manuale'))
ConcatField
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
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):
[
[
"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
DateField::make('date', __('Data'))
DateTimeField
DateTimeField::make('created_at', __('Registrato Il')),
JsonArrayField
JsonArrayField::make('roles', 'Ruoli')
NumberField
NumberField::make('part_time_hours', __('Ore part-time'))
TextField
NumberField::make('first_name', __('Nome')),
TimeField
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:
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
Parametro | Tipo | Descrizione |
---|---|---|
$useCustomValue | bool | Indica se il metodo customValue() va utilizzato |
$useCustomFilter | bool | Indica se il metodo customFilter() va utilizzato |
$advancedFilter | bool | Da includere nei filtri avanzati della Datatable |
$globalFilter | bool | Da includere nel filtro globale della Datatable (textbox in alto a DX) |
$sortable | bool | Rende la colonna generata ordinabile |
$hidden | bool | Da escludere in visualizzazione (ma magari utilizzabile per filtrare) |
$export | bool | Da includere nell'export |
N.B. queste proprietà possono essere passate anche via metodo a qualsiasi Field esistente (es.
...->hidden(true)
)