--- name: elixforms-php-common-library description: > Documentazione della libreria condivisa PHP common/ del progetto elixForms. Descrive la classe base ElixFormsComponent, i metodi factory per i campi form, ElixFormsElement per il layout, QueryParamHelper per i query parameter, e il pattern di ereditarietà per creare pagine custom. Attiva questa skill quando lavori sui componenti PHP condivisi, crei nuovi tipi di campo, modifichi la classe base, o integri con la piattaforma elixForms in PHP. --- # Libreria Common PHP elixForms ## Panoramica La cartella `php/common/` contiene la libreria condivisa PHP usata da tutte le pagine custom PHP. È basata su **Bootstrap Italia + HTML nativo** e implementa un sistema di form con campi dinamici, analogo alla libreria React in `react/common/`. ## Architettura delle Classi ``` ElixFormsComponent (classe astratta, PHP 8.0+) └── SceltaCarrieraPage (classe concreta, in scelta-carriera/index.php) └── [AltrePageCustom] (classi concrete nelle sotto-cartelle) ``` ### Namespace Tutte le classi usano il namespace PSR-4: ```php namespace ElixForms\Common; ``` Le pagine importano con: ```php require_once __DIR__ . '/../common/ElixFormsComponent.php'; use ElixForms\Common\ElixFormsComponent; ``` ## File della Libreria ### `ElixFormsComponent.php` (Classe Base Astratta) Equivalente di `ElixFormsComponentAbstract.tsx` in React. #### Proprietà ```php protected array $properties; // Equivalente di IElixFormsComponentProperties ``` Chiavi supportate in `$properties`: | Chiave | Tipo | Obbligatorio | Descrizione | |---|---|---|---| | `moduleName` | string | Sì | Nome del modulo nel breadcrumb | | `cardTitle` | string | Sì | Titolo della card principale | | `userDisplayName` | string | No | Nome utente nell'header | | `headerTitle` | string | No | Titolo sotto il breadcrumb | | `headerHeroImageSrc` | string | No | URL immagine hero | | `cardDescription` | string | No | Descrizione nella card | | `alertInfoTitle` | string | No | Titolo alert informativo | | `alertInfoMessage` | string | No | Messaggio alert informativo | | `instructionsTitle` | string | No | Titolo istruzioni | | `instructionsMessage` | string | No | Messaggio istruzioni | | `submitText` | string | No | Testo bottone submit (default: 'INVIA') | | `additionalFieldsJson` | string | No | JSON schema per campi dinamici | | `isDarkTheme` | bool | No | Tema scuro (riservato per uso futuro) | #### Metodi Factory (Campi Form) | Metodo | Tipo Campo | HTML Output | |---|---|---| | `createTextInput($name, $label, $required)` | Testo | `` | | `createTextAreaInput($name, $label, $required)` | Textarea | `