Options de mise en page du formulaire
Trois façons d'organiser les champs d'un formulaire de création/édition, plus le sélecteur côté client déterminant comment ce formulaire s'affiche à l'écran.
La disposition par défaut
Sans aucune configuration de mise en page, chaque champ éditable s'affiche un par ligne, de haut en bas, dans l'ordre naturel des colonnes de la table (ou l'ordre de fields(), si vous l'avez appelée). Cela ne nécessite aucun réglage et constitue le bon choix pour les formulaires courts :
$xcrud = Xcrud::get_instance();
$xcrud->table('customers');
$xcrud->route('customers');
echo $xcrud->render();
rows() - des champs côte à côte
rows($row, $fields) place deux champs ou plus sur la même ligne numérotée du formulaire au lieu de les empiler. Chaque champ partageant une ligne se divise équitablement toute la largeur de cette ligne :
$xcrud->rows(1, 'firstName,lastName');
$xcrud->rows(2, 'city,state,zip');
$row est une position de ligne, pas un index d'ordre de déclaration - les lignes s'affichent dans l'ordre numérique croissant, quel que soit l'appel à rows() venu en premier dans votre PHP. Un champ appartient à au plus une ligne ; rappeler rows() pour lui le déplace plutôt que de le dupliquer. Les lignes sont indépendantes de - et se combinent librement avec - toute autre disposition ci-dessous.
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
$row | int | requis | Position de la ligne (1 ou plus) ; les lignes s'affichent dans l'ordre numérique croissant |
$fields | string | requis | Liste de noms de champs éditables séparés par des virgules à placer sur cette ligne |
rows() + aside() - une colonne latérale persistante
aside($fields) extrait entièrement des champs du flux principal du formulaire pour les placer dans une colonne séparée qui reste visible à ses côtés, tandis que tout le reste - champs simples, paires rows(), ce qu'il reste - occupe le panneau principal. Elle est fréquemment combinée avec rows() pour que le panneau principal reste compact et que la colonne latérale accueille les téléversements ou champs secondaires :
$xcrud->rows(1, 'firstName,lastName');
$xcrud->rows(2, 'city,state,zip');
$xcrud->aside('photo,attach');
Les champs en colonne latérale s'empilent de haut en bas dans l'ordre où la propre liste de champs du formulaire les place déjà - il n'y a qu'une seule colonne latérale, il n'y a donc pas de numéro de ligne à lui donner. Remarque : sur une table qui utilise aussi https://xcrudnova.xcrud.net/docs/fr/nested-tables-overview, la colonne latérale reste à l'intérieur du seul panneau d'onglet "Details" du parent, pas à travers chaque onglet imbriqué.
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
$fields | string | requis | Liste de noms de champs éditables séparés par des virgules à extraire vers la colonne latérale |
Le sélecteur de mode d'édition (côté client)
Indépendamment de la façon dont les propres champs d'un formulaire sont organisés, set_edit_mode($mode) contrôle comment le formulaire lui-même est présenté lorsqu'une ligne est ouverte pour ajout/édition :
$xcrud->set_edit_mode('side');
| Mode | Description |
|---|---|
modal | Boîte de dialogue popup centrée par-dessus la grille (le défaut) |
side | Panneau tiroir/offcanvas glissant depuis le bord de l'écran |
current | "Normal" - le formulaire remplace la grille en ligne, dans la page elle-même |
Deux modes supplémentaires existent mais sont uniquement accessibles en JS - il n'existe pas de valeur set_edit_mode() pour eux, seul le menu "⋯ Plus d'options" de la barre d'outils (voir https://xcrudnova.xcrud.net/docs/fr/grid-toolbar-and-more-options-menu) peut les atteindre au moment de l'exécution :
| Mode | Description |
|---|---|
split_left | Grille et formulaire affichés côte à côte, formulaire ancré à gauche, dans une vue divisée redimensionnable |
split_right | Même vue divisée, formulaire ancré à droite à la place |
Contrairement à modal/side, les modes divisés ne masquent ni ne recouvrent jamais la grille - son tableau de données devient simplement plus étroit, et reste entièrement cliquable pendant qu'une ligne est en cours d'édition à ses côtés.