Skip to content

Référence de configuration

Tout ce que vous pouvez configurer dans Melis, au même endroit : variables d'environnement, fichier plateforme, la famille app.*.php, les melis keys, les traductions, les assets et les caches.

Variables d'environnement

Deux variables pilotent chaque installation (définies dans docker-compose.yml, ou via Apache SetEnv) :

VariableRôle
MELIS_PLATFORMSélectionne la config plateforme config/autoload/platforms/<MELIS_PLATFORM>.php (la connexion DB). P. ex. local, dev1.
MELIS_MODULELe module de site servi comme front office pour ce domaine (p. ex. MelisDemoCms).
MYSQL_HOSTNAME / MYSQL_DATABASE / MYSQL_USER / MYSQL_PASSWORDConnexion DB, généralement lue par le fichier plateforme via getenv().

Le fichier plateforme

config/autoload/platforms/<MELIS_PLATFORM>.php contient la connexion base de données (et quelques réglages d'hôte). Il est fusionné en dernier, donc il surcharge les défauts par environnement :

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',
];

Le fichier chargé est choisi dans config/application.config.php (config_glob_paths) depuis getenv('MELIS_PLATFORM').

Fichiers de config projet

FichierRôle
config/melis.module.load.phpLa liste ordonnée des modules backoffice à charger.
config/melis.modules.path.phpMap généré : nom de module → chemin filesystem (construit par MelisAssetManager).
config/application.config.phpEntrée de l'app : assemblage des modules, glob paths, flags de cache.
config/autoload/{global,local}.phpConfig autoload Laminas standard.
config/autoload/platforms/<env>.phpConfig DB/plateforme par environnement (ci-dessus).
config/development.config.phpSurcharges de dev (créé par laminas-development-mode enable).

La famille app.*.php

Chaque module backoffice fusionne ces fichiers spécifiques à Melis dans Module::getConfig(). Ils construisent tous un arbre unique sous une racine plugins, interrogeable via MelisCoreConfig :

FichierDéclare
app.interface.phpLes zones d'UI et leur forward (module/controller/action). Chaque nœud : conf (id, name, icon, melisKey, rightsDisplay), forward, interface imbriqué.
app.toolstree.phpL'emplacement d'un tool dans le menu gauche (*_toolstree_section).
app.tools.phpLes tools : tables de données (colonnes, filtres, boutons d'action), formulaires.
app.forms.phpDéfinitions de formulaires réutilisables (spec Laminas form + input_filter).
app.emails.phpConfigs de templates d'email.
app.microservice.phpAPIs de méthodes de service appelables (formulaires entrée/sortie).
excluded.routes.phpRoutes qui contournent le contrôle d'auth.

Conventions

  • Clés de traduction : tr_<module>_<section>_<item> (p. ex. tr_meliscore_tool_users).
  • Ids de config : id_<module>_<item>.
  • Melis keys : alias courts déclarés comme 'conf' => ['melisKey' => '…'] → résolus en chemins de config complets par MelisCoreConfig::getMelisKeys().
  • Tables : melis_<domaine>_<entité> (p. ex. melis_core_user, melis_cms_page_published, melis_ecom_product).
  • Routes : <slug-module>/<nom> (p. ex. melis-backoffice/login).

Traductions

Tableaux PHP par locale, sous le language/ de chaque module :

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

Chargés par Module::createTranslations() pour la locale active (session melis-lang-locale), avec en_EN en fallback. Les types incluent interface, forms, install, setup.

Assets

MelisAssetManager sert le dossier public/ de chaque module sous /<NomModule>/… et génère config/melis.modules.path.php. Un module de site liste ses CSS/JS front office dans config/assets.config.php. Le bundling Webpack est disponible (outil de build / action backoffice).

Caches

Le comportement du cache est configuré dans le module.config.php de melis-core (section caches) et utilisé via MelisCoreCacheSystemService. Chaque cache a un flag active, un cache_dir sous cache/, et des TTL par clé. Le cache de config Laminas est gouverné par config_cache_enabled dans application.config.php (désactivé par défaut dans ce skeleton). Voir Dépannage pour vider les caches.

Configuration du back-office React

Le back-office React v6 (/melis-react) tourne sur le même framework et le même arbre de config que le back-office classique (/melis) — tout ce qui précède s'applique encore. Deux modules d'infrastructure supplémentaires assurent son câblage. Les deux sont chargés via config/application.config.php (module_paths / modules, pas via l'autoload composer) et aucun des deux n'a de config de niveau projet à éditer : activer le BO React se résume à charger ces modules.

ModuleRôle
MelisReactApiL'ossature de l'API JSON. Déclare les endpoints génériques /melis/react-api/… (dans son propre config/module.config.php) et héberge le résolveur de capabilities. Ne produit aucune UI.
MelisReactOverrideSert le shell React et rend les tools legacy sous forme d'iframes. Surcharge le contrôleur PluginView de MelisCore et déclare les routes du shell/des tools.

Servir le shell

La SPA React est servie par le SpaController de MelisReactOverride à /melis-react et chaque lien profond en dessous (route regex meliscore-melis-react-spa, priority => 1000). Le index.html du shell est lu depuis le public/ui-react/index.html de melis-core, servi à /MelisCore/ui-react/ — le build React vit donc avec melis-core, pas dans ces modules.

Parce que l'application React gère sa propre authentification, MelisReactOverride ajoute quelques routes à plugins.meliscore.datas.excluded_routes de MelisCore (publiques, sans redirection de connexion) : la route de la SPA elle-même, melis-backoffice/react-platform-bundle, et les deux endpoints de boot en lecture seule melis-backoffice/melis-react-api/platformscheme-react-get et melis-backoffice/melis-react-api/langs.

Découverte des bricks / modules

Le shell découvre les tools au démarrage via GET /melis/react-api/react-modules, qui scanne les modules actifs à la recherche d'un public/ui-react/brick.manifest.json (un objet unique ou un tableau bricks: [...]) et renvoie les définitions de bricks plus une URL de bundle unique concaténée (GET /melis/react-api/bricks-bundle.js). Un brick apparaît donc si et seulement si son module est actif — c'est la règle de modularité ; il n'y a pas de registre séparé à maintenir. Un module qui livre un tool React le fournit comme brick sous son propre public/ui-react/.

Clés de config React par module

Les modules de tools individuels (pas ces deux modules d'infrastructure) peuvent déclarer une config React, fusionnée dans l'arbre de config via leur Module::getConfig() :

Fichier / cléDéclare
config/react-api.phpLes propres routes de données /melis/react-api/… d'un module de tool (p. ex. users, roles vivent dans MelisCore / MelisSmallBusiness — pas dans MelisReactApi).
config/react.capabilities.php (melisReactToolCapabilities)Les « droits avancés » fins (list / create / edit / delete, ou un arbre imbriqué { actions, tabs }) qui existent par melisKey de tool. Le défaut est autoriser ; les refus sont stockés dans une section dédiée <meliscore_tool_capabilities> du XML des droits utilisateur/rôle.
melis_react_override.toolpage_extensions[]Noms de services implémentant PluginViewToolPageExtensionInterface — les particularités par tool d'un module (ajustements HTML/assets) pour les tools legacy affichés dans le shell React. Les contributions s'accumulent quel que soit l'ordre de chargement.

Les modules d'infrastructure eux-mêmes ne déclarent aucune de ces clés : MelisReactApi est le moteur qui lit les déclarations de capabilities des autres modules, et MelisReactOverride ne livre aucun brick, aucun react-api.php et aucun react.capabilities.php.

Où regarder

SujetChemin
Liste des modulesconfig/melis.module.load.php
DB plateformeconfig/autoload/platforms/<MELIS_PLATFORM>.php
Service de configvendor/melisplatform/melis-core/src/Service/MelisCoreConfigService.php
Config de cachevendor/melisplatform/melis-core/config/module.config.php (caches)
Asset managervendor/melisplatform/melis-asset-manager/
Routes d'API React / résolveur de capabilitiesvendor/melisplatform/melis-react-api/
Shell React + iframe des tools legacy / route SPAvendor/melisplatform/melis-react-override/
Build du shell React (index.html, bricks)vendor/melisplatform/melis-core/public/ui-react/