Skip to Content
DocumentationContenusTypes de champs

Types de champs

Lochness CMS fournit une bibliothèque de champs prêts à l’emploi pour construire les formulaires d’édition de vos ressources. Chaque champ se déclare dans la méthode fields() de la ressource :

use Lochness\Fields\Text; use Lochness\Fields\Select; public function fields(): array { return [ Text::make('Titre', 'title')->required()->translated(), Select::make('Statut', 'status')->options([ 'draft' => 'Brouillon', 'published' => 'Publié', ]), ]; }

Méthodes communes à tous les champs

Toutes les méthodes ci-dessous sont chaînables et héritées par chaque type de champ.

Visibilité

MéthodeDescription
`->showOnIndex(boolClosure)`
`->hideFromIndex(boolClosure)`
`->showOnDetail(boolClosure)`
`->hideFromDetail(boolClosure)`
`->showOnCreate(boolClosure)`
->onlyOnIndex()Affichage uniquement dans la liste
->onlyOnDetail()Affichage uniquement dans la vue détail
->onlyOnCreation()Affichage uniquement à la création
->onlyOnForms()Affichage uniquement dans les formulaires
`->hidden(boolClosure)`

Configuration

MéthodeDescription
->help(string $text)Texte d’aide affiché sous le champ
->label(string $label)Libellé personnalisé
->placeholder(string $text)Texte indicatif dans le champ
->default(mixed $value)Valeur par défaut
->class(string $css)Classes CSS additionnelles
->spacing(string $classes)Classes d’espacement

Validation

MéthodeDescription
`->rules(stringarray $rules)`
`->creationRules(stringarray $rules)`
`->updateRules(stringarray $rules)`
`->required(boolClosure)`
->nullable()Autorise les valeurs nulles
->unique(bool)Valeur unique en base

État et accès

MéthodeDescription
`->readonly(boolClosure)`
`->disabled(boolClosure)`
->translated(bool)Active le support multi-langue
->searchable(bool)Rend le champ recherchable depuis la liste
->seo(bool)Place le champ dans la section SEO

Avancé

MéthodeDescription
->html()Autorise le contenu HTML brut
->textAlign(string)Alignement dans la liste (text-left, text-center, text-right)
->withMeta(array $meta)Métadonnées arbitraires

Champs texte

Text

Champ texte sur une ligne.

Text::make('Titre', 'title')

Textarea

Zone de texte multi-lignes.

Textarea::make('Description', 'description')->rows(8)
MéthodeDescription
->rows(int)Nombre de lignes (défaut : 5)

Title

Champ titre dédié à l’éditorial et au SEO.

Title::make('Titre de page', 'page_title')

Markdown

Éditeur Markdown.

Markdown::make('Contenu', 'body')->rows(15)
MéthodeDescription
->rows(int)Hauteur de l’éditeur (défaut : 5)

Masqué de la liste par défaut.

Redactor

Éditeur de texte riche avec barre d’outils configurable.

Redactor::make('Contenu', 'content') ->toolbar(['bold', 'italic', 'link', 'list']) ->plugins(['fileexplorer'])
MéthodeDescription
->rows(int)Hauteur de l’éditeur
->toolbar(array)Boutons : add, html, format, bold, italic, deleted, list, link, table
->plugins(array)Plugins : alignment, filelink, fileexplorer

Slug

Champ d’URL simplifié (slug).

Slug::make('Slug', 'slug')

Password

Champ mot de passe avec générateur intégré optionnel. Masqué de la liste et de la vue détail par défaut.

Password::make('Mot de passe', 'password')->showGenerator()->length(16)
MéthodeDescription
->showGenerator() / ->hideGenerator()Active ou désactive le générateur
->length(int)Longueur du mot de passe généré (défaut : 10)

Champs de choix

Checkbox

Case à cocher booléenne.

Checkbox::make('En ligne', 'online')->default(true)
MéthodeDescription
->values($trueValue, $falseValue)Personnalise les valeurs stockées
->trueValue($value) / ->falseValue($value)Valeurs individuelles

Select

Liste déroulante.

Select::make('Statut', 'status') ->options(['draft' => 'Brouillon', 'published' => 'Publié']) ->multiple()
MéthodeDescription
`->options(arrayClosure)`
->multiple()Sélection multiple

Country

Liste déroulante pré-remplie avec tous les pays. Hérite de Select.

Country::make('Pays', 'country')

Champs date et numériques

Date

Sélecteur de date.

Date::make('Date de publication', 'published_at')

Datetime

Sélecteur de date et heure.

Datetime::make('Publié le', 'published_at')->format('d.m.Y H:i')
MéthodeDescription
->format(string)Format d’affichage (défaut : d.m.Y H:i)

Color

Sélecteur de couleur.

Color::make('Couleur', 'color')->default('#000000')

Champs identifiants

ID

Affichage de la clé primaire (lecture seule).

ID::make('ID', 'id')

Uuid

Champ UUID.

Uuid::make('Identifiant', 'uuid')

OrderID

Champ d’identifiant d’ordre / séquence. Le libellé par défaut est “OrderID”.

OrderID::make('Ordre') OrderID::forModel(Article::class)
MéthodeDescription
->asBigInt()Convertit en chaîne pour la compatibilité JavaScript

Champs structurés

Json

Éditeur JSON brut. Masqué de la liste par défaut.

Json::make('Configuration', 'config')->rows(10)
MéthodeDescription
->rows(int)Hauteur de l’éditeur (défaut : 5)

Collection de liens.

Links::make('Liens', 'links')

Embeds

Contenu embarqué (iframe, code embed).

Embeds::make('Embed', 'embed_code')

Place

Champ d’adresse avec autocomplétion et géocodage. Permet de mapper les composants de l’adresse (ville, code postal, latitude, etc.) vers d’autres attributs du modèle.

Place::make('Adresse', 'address') ->onlyCities() ->countries(['CH', 'FR']) ->city('city') ->postalCode('postal_code') ->country('country_code') ->latitude('lat') ->longitude('lng')
MéthodeDescription
->onlyCities()Restreint l’autocomplétion aux villes
->countries(array)Limite par codes pays (ISO 3166)
->type(string)Type de lieu
->language(string)Langue de l’autocomplétion
->city(string), ->state(), ->postalCode(), ->suburb(), ->country(), `->secondAddressLine(stringnull), ->latitude(), ->longitude()`

Champs visuels

Thumbnail

Aperçu d’image dans la liste. Affiché uniquement dans la liste par défaut.

Thumbnail::make('Vignette', 'thumbnail') ->width(150) ->height(150) ->conversion('thumb')
MéthodeDescription
->width(int) / ->height(int)Dimensions (défaut : 200×200)
->filename(string)Champ source du fichier
->conversion(string)Nom de la conversion d’image (Spatie Media Library)

Separator

Séparateur visuel ou titre de section. Ne stocke aucune donnée. Masqué de la liste par défaut.

Separator::make('Informations SEO')

Section

Conteneur logique pour regrouper plusieurs champs. Ne correspond pas à une colonne en base.

Section::make('seo') ->label('Référencement') ->help('Ces informations apparaissent dans les moteurs de recherche.') ->fields([ Text::make('Meta title', 'meta_title')->translated(), Textarea::make('Meta description', 'meta_description')->translated(), ])

Champs de relation

BelongsTo

Relation de type “appartient à”. Permet de lier un enregistrement à un autre.

BelongsTo::make('Auteur', 'author') ->options(fn () => Author::all()) ->useField('full_name') ->link()
MéthodeDescription
`->options(arrayClosure)`
->multiple()Sélection multiple
->useField(string)Champ utilisé pour l’affichage (défaut : title)
->link(bool)Active le lien dans la vue liste
->route(string $uri, string $keyname)Route personnalisée

ManyToMany

Relation plusieurs-à-plusieurs.

ManyToMany::make('Catégories', 'categories') ->options(fn () => Category::all()) ->multiple()
MéthodeDescription
`->options(arrayClosure)`
->multiple()Sélection multiple (généralement activée)

PageBuilder

Le champ PageBuilder constitue un système à part entière de blocs configurables. Il dispose de sa propre page de documentation.

Voir Page Builder pour la liste des blocs et la configuration complète.

Last updated on