Skip to content

Riferimento della configurazione

Tutto ciò che puoi configurare in Melis, in un unico posto: variabili d'ambiente, il file di piattaforma, la famiglia di file di configurazione app.*.php, le melis key, le traduzioni, gli asset e le cache.

Variabili d'ambiente

Due variabili guidano ogni installazione (impostate in docker-compose.yml, oppure tramite SetEnv di Apache):

VariabileScopo
MELIS_PLATFORMSeleziona la configurazione di piattaforma config/autoload/platforms/<MELIS_PLATFORM>.php (la connessione al DB). Ad es. local, dev1.
MELIS_MODULEIl modulo del sito servito come front office per questo dominio (ad es. MelisDemoCms).
MYSQL_HOSTNAME / MYSQL_DATABASE / MYSQL_USER / MYSQL_PASSWORDConnessione al DB, di solito letta dal file di piattaforma tramite getenv().

Il file di piattaforma

config/autoload/platforms/<MELIS_PLATFORM>.php contiene la connessione al database (e alcune impostazioni dell'host). Viene unito per ultimo, quindi sovrascrive i valori predefiniti per ciascun ambiente:

php
return [
    'db' => [
        'driver'   => 'Mysqli',
        'hostname' => getenv('MYSQL_HOSTNAME') ?: 'localhost',
        'database' => getenv('MYSQL_DATABASE'),
        'username' => getenv('MYSQL_USER'),
        'password' => getenv('MYSQL_PASSWORD'),
        'port'     => '3306',
        'charset'  => 'utf8mb4',
    ],
    'melis_platform'       => getenv('MELIS_PLATFORM'),
    'melis_http_host'      => 'localhost',
    'melis_request_scheme' => 'http',
];

Il file caricato viene scelto in config/application.config.php (config_glob_paths) a partire da getenv('MELIS_PLATFORM').

File di configurazione del progetto

FileRuolo
config/melis.module.load.phpL'elenco ordinato dei moduli di backoffice da caricare.
config/melis.modules.path.phpMappa generata: nome del modulo → percorso sul filesystem (costruita da MelisAssetManager).
config/application.config.phpPunto di ingresso dell'app: assemblaggio dei moduli, glob path, flag della cache.
config/autoload/{global,local}.phpConfigurazione di autoload standard di Laminas.
config/autoload/platforms/<env>.phpConfigurazione DB/piattaforma per ambiente (vedi sopra).
config/development.config.phpOverride per lo sviluppo (creato da laminas-development-mode enable).

La famiglia di file di configurazione app.*.php

Ogni modulo di backoffice unisce questi file specifici di Melis in Module::getConfig(). Costruiscono tutti un unico albero sotto una radice plugins, interrogabile tramite MelisCoreConfig:

FileDichiara
app.interface.phpLe zone dell'interfaccia utente e il loro forward (module/controller/action). Ogni nodo: conf (id, name, icon, melisKey, rightsDisplay), forward, interface annidato.
app.toolstree.phpDove uno strumento si aggancia nel menu di sinistra (*_toolstree_section).
app.tools.phpStrumenti: tabelle dati (colonne, filtri, pulsanti di azione), form.
app.forms.phpDefinizioni di form riutilizzabili (spec del form Laminas + input_filter).
app.emails.phpConfigurazioni dei template email.
app.microservice.phpAPI di metodi di servizio richiamabili (form di input/output).
excluded.routes.phpRoute che bypassano il controllo di autenticazione.

Convenzioni

  • Chiavi di traduzione: tr_<module>_<section>_<item> (ad es. tr_meliscore_tool_users).
  • Id di configurazione: id_<module>_<item>.
  • Melis key: alias brevi dichiarati come 'conf' => ['melisKey' => '…'] → risolti in percorsi di configurazione completi da MelisCoreConfig::getMelisKeys().
  • Tabelle: melis_<area>_<entity> (ad es. melis_core_user, melis_cms_page_published, melis_ecom_product).
  • Route: <module-slug>/<name> (ad es. melis-backoffice/login).

Traduzioni

Array PHP per ogni locale sotto la cartella language/ di ciascun modulo:

language/en_EN.interface.php
language/fr_FR.interface.php   // 'tr_key' => 'Texte'

Caricati da Module::createTranslations() per il locale attivo (sessione melis-lang-locale), con en_EN come fallback. I tipi includono interface, forms, install, setup.

Asset

MelisAssetManager serve la cartella public/ di ciascun modulo su /<ModuleName>/… e genera config/melis.modules.path.php. Un modulo del sito elenca i propri CSS/JS di front office in config/assets.config.php. È disponibile il bundling con Webpack (strumento di build / azione di backoffice).

Cache

Il comportamento della cache è configurato nel module.config.php di melis-core (la sezione caches) e usato tramite MelisCoreCacheSystemService. Ogni cache ha un flag active, una cache_dir sotto cache/, e TTL per chiave. La cache di configurazione di Laminas è governata da config_cache_enabled in application.config.php (disattivata per impostazione predefinita in questo skeleton). Vedi Risoluzione dei problemi per svuotare le cache.

Configurazione del back-office React

Il back-office React v6 (/melis-react) gira sullo stesso framework e sullo stesso albero di configurazione del back-office classico (/melis) — tutto quanto sopra resta valido. Due moduli infrastrutturali aggiuntivi lo collegano. Entrambi vengono caricati tramite config/application.config.php (module_paths / modules, non tramite l'autoload di composer) e nessuno dei due ha alcuna configurazione a livello di progetto da modificare: abilitare il BO React è semplicemente una questione di caricare questi moduli.

ModuloRuolo
MelisReactApiLa struttura portante dell'API JSON. Dichiara gli endpoint generici /melis/react-api/… (nel proprio config/module.config.php) e ospita il resolver delle capability. Non disegna alcuna UI.
MelisReactOverrideServe la shell React e visualizza gli strumenti legacy come iframe. Sovrascrive il controller PluginView di MelisCore e dichiara le route della shell/degli strumenti.

Servire la shell

La SPA React è servita dallo SpaController di MelisReactOverride su /melis-react e su ogni deep link al suo interno (route regex meliscore-melis-react-spa, priority => 1000). L' index.html della shell viene letto dal public/ui-react/index.html di melis-core, servito su /MelisCore/ui-react/ — quindi la build React risiede insieme a melis-core, non in questi moduli.

Poiché l'app React gestisce la propria autenticazione, MelisReactOverride aggiunge alcune route a plugins.meliscore.datas.excluded_routes di MelisCore (pubbliche, senza redirect al login): la route della SPA stessa, melis-backoffice/react-platform-bundle, e i due endpoint di boot in sola lettura melis-backoffice/melis-react-api/platformscheme-react-get e melis-backoffice/melis-react-api/langs.

Scoperta di brick / moduli

La shell scopre gli strumenti al boot tramite GET /melis/react-api/react-modules, che scansiona i moduli attivi alla ricerca di un public/ui-react/brick.manifest.json (un singolo oggetto o un array bricks: [...]) e restituisce le definizioni dei brick più un unico URL di bundle concatenato (GET /melis/react-api/bricks-bundle.js). Un brick appare quindi se e solo se il suo modulo è attivo — questa è la regola di modularità; non c'è alcun registro separato da mantenere. Un modulo che fornisce uno strumento React lo espone come brick sotto il proprio public/ui-react/.

Chiavi di configurazione React per modulo

I singoli moduli degli strumenti (non questi due moduli infrastrutturali) possono dichiarare configurazione React, unita nell'albero di configurazione tramite il loro Module::getConfig():

File / chiaveDichiara
config/react-api.phpLe route dati /melis/react-api/… proprie di un modulo di strumento (ad es. users, roles risiedono in MelisCore / MelisSmallBusiness — non in MelisReactApi).
config/react.capabilities.php (melisReactToolCapabilities)I "diritti avanzati" a grana fine (list / create / edit / delete, o un albero annidato { actions, tabs }) che esistono per ciascun melisKey dello strumento. Il valore predefinito è allow; i divieti sono memorizzati in una sezione dedicata <meliscore_tool_capabilities> dell'XML dei diritti dell'utente/ruolo.
melis_react_override.toolpage_extensions[]Nomi di servizio che implementano PluginViewToolPageExtensionInterface — le peculiarità per strumento di un modulo (aggiustamenti HTML/asset) per gli strumenti legacy mostrati nella shell React. I contributi si accumulano indipendentemente dall'ordine di caricamento.

I moduli infrastrutturali stessi non dichiarano nessuna di queste chiavi: MelisReactApi è il motore che legge le dichiarazioni di capability degli altri moduli, e MelisReactOverride non fornisce alcun brick, alcun react-api.php e alcun react.capabilities.php.

Dove cercare

ArgomentoPercorso
Elenco dei moduliconfig/melis.module.load.php
DB di piattaformaconfig/autoload/platforms/<MELIS_PLATFORM>.php
Servizio di configurazionevendor/melisplatform/melis-core/src/Service/MelisCoreConfigService.php
Configurazione della cachevendor/melisplatform/melis-core/config/module.config.php (caches)
Asset managervendor/melisplatform/melis-asset-manager/
Route dell'API React / resolver delle capabilityvendor/melisplatform/melis-react-api/
Shell React + iframe degli strumenti legacy / route della SPAvendor/melisplatform/melis-react-override/
Build della shell React (index.html, brick)vendor/melisplatform/melis-core/public/ui-react/