Comment partager de la configuration entre Symfony et son front en JS ?
Imaginez que vous avez de la configuration qui doit être disponible :
- Dans vos templates Twig ;
- Dans votre code JavaScript ;
- Et pourquoi pas dans vos services PHP.
On peut alors se demander comment partager cette configuration pour éviter de la dupliquer.
Section intitulée le-fichier-de-configurationLe fichier de configuration
La première chose à mettre en place est le fichier de configuration. Nous utilisons le format JSON qui est un format d’échange qui est facilement compris par PHP et JavaScript :
// ./assets/config.json
{
"a_key": "a value",
"another_key": "another value"
}
Section intitulée l-utilisation-en-javascriptL’utilisation en JavaScript
Ensuite, pour le récupérer depuis un fichier JavaScript, il suffit de l’importer :
// ./assets/app.js
import config from './config.json';
console.log(config);
Section intitulée l-utilisation-via-symfonyL’utilisation via Symfony
Ensuite, pour exposer la configuration dans Symfony, nous allons utiliser un paramètre config
.
Si votre version de Symfony le permet, vous pouvez utiliser une variable d’environnement avec des processors :
# config/services.yaml
parameters:
env(CONFIG_FILE): '%kernel.project_dir%/assets/config.json'
config: '%env(json:file:CONFIG_FILE)%'
Si votre version de Symfony est trop ancienne, ou si vous voulez bidouiller la configuration en PHP :
<?php
// config/packages/parameters.php
$container->setParameter(
'config',
json_decode(
file_get_contents(__DIR__ . '/../../assets/config.json'),
true,
flag: JSON_THROW_ON_ERROR
)
);
Sur les dernières versions de Symfony, ce fichier est automatiquement lu. Si ce n’est pas le cas, vous allez devoir le charger manuellement :
# config/packages/framework.yaml
imports:
- { resource: 'parameters.php' }
Section intitulée l-utilisation-dans-twigL’utilisation dans Twig
Pour récupérer la configuration depuis twig, nous allons déclarer une nouvelle globale :
# config/packages/twig.yaml
twig:
globals:
config: '%config%'
Et son utilisation se fait de la manière suivante :
{# template/base.html.twig #}
...
{{ config.a_key }}
...
Et voilà ! Avec un seul fichier JSON, nous sommes capables d’exposer des configurations dans les trois langages que nous utilisons couramment avec Symfony.
Et vous, avez-vous une autre technique ?
Commentaires et discussions
Notre outillage front-end en 2025
Nous sommes désormais 3 intégrateurs et intégratrices chez JoliCode. Afin d’harmoniser nos façons de faire, nous avons décidé de créer un projet vide, une sorte de « front-end starter » qui nous permettrait de démarrer une intégration. Il se base sur Symfony, le framework pour lequel…
Lire la suite de l’article Notre outillage front-end en 2025
Nos articles sur le même sujet
Ces clients ont profité de notre expertise
JoliCode continue d’accompagner les équipes web d’Afflelou en assurant la maintenance des différentes applications constituant la plateforme Web B2C. Nous mettons en place des bonnes pratiques avec PHPStan et Rector, procédons à la montée de version de PHP et Symfony, optimisons le code grâce au profiling, et collaborons avec l’infogéreur pour les…
L’équipe de Finarta a fait appel à JoliCode pour le développement de leur plateforme Web. Basée sur le framework Symfony 2, l’application est un réseau privé de galerie et se veut être une place de communication et de vente d’oeuvres d’art entre ses membres. Pour cela, de nombreuses règles de droits ont été mises en places et une administration poussée…
En tant que joaillier 100 % numérique, l’équipe de Courbet Paris a souhaité se doter d’une plateforme eCommerce, capable d’offrir une expérience moderne qui revalorise l’acte d’achat de produits de joaillerie sur internet. JoliCode a accompagné leur équipe en développant une plateforme robuste, mais aussi évolutive, afin de répondre aux enjeux business…