This Symfony Bundle is useful if you need to expose constants to front.
composer require constant-exposure/constant-exposure-bundle:^2.2
In config/bundles.php
, add this line:
return [
...
ConstantExposureBundle\ConstantExposureBundle::class => ['all' => true],
];
Create a file config/packages/constant_exposure.yaml
in your project. Then, configure constants to expose.
constant_exposure:
parameter:
debug: '%kernel.debug%'
sentry_dsn: '%env(SENTRY_DSN)%'
password_expire: !php/const App\Entity\Password::EXPIRE_PASSWORD
Add this line in your Twig template. Pass as parameter a name for your JavaScript object.
{{ constant_exposure_object('ConstantExposure') }}
Get them in Javascript:
ConstantExposure.getParameter(PARAMETER_NAME [, DEFAUlT_VALUE = null] );
// Check if you are in debug mode
const isDebug = ConstantExposure.getParameter('debug');
// If sentry_dsn is not defined, default value is an empty string
const sentryDsn = ConstantExopsure.getParameter('sentry_dsn', '');
If you need to expose your constants on a route, add these lines in your routing file:
constant_exposure:
resource: "@ConstantExposureBundle/Resources/config/routing.yaml"
Then, you can access it with this url:
- /constant-exposure.json for a JSON format
- /constant-exposure.xml for a XML format
- /constant-exposure.csv for a CSV format