jdecool / twig-constant-accessor-bundle
Simplify access of your class constants in Twig
Installs: 5 078
Dependents: 0
Suggesters: 0
Security: 0
Stars: 9
Watchers: 4
Forks: 3
Open Issues: 3
Type:symfony-bundle
Requires
- php: ^8.1
- symfony/dependency-injection: ^5.4|^6.0|^7.0
- symfony/framework-bundle: ^5.4|^6.0|^7.0
- symfony/twig-bundle: ^5.4|^6.0|^7.0
- twig/twig: ^2.4|^3.0
Requires (Dev)
README
This bundle simplify access of your enum values or class constants in Twig.
Install it
Install extension using composer:
$ composer require jdecool/twig-constant-accessor-bundle
If you don't use Symfony Flex, you have to enabled the bundle in your config/bundles.php
configuration:
<?php return [ // ... JDecool\Bundle\TwigConstantAccessorBundle\JDecoolTwigConstantAccessorBundle::class => ['all' => true], ];
Register the class you want to access constant in your configuration file :
twig_constant_accessor: classes: - AppBundle\Model\Foo - { class: 'AppBundle\Model\Bar' } - { class: 'AppBundle\Model\FooBar', alias: 'FooBarAlias' } - { class: 'AppBundle\Model\ConstantClass', matches: '/^RULE_/' } # matches accept an regexp compatible with the preg_match function
You can also register a class in your container configuration using the twig.constant_accessor
tag :
services: my_service: class: Namespace\To\ServiceClass tags: - { name: twig.constant_accessor } my_collection: class: MyClass tags: - { name: twig.constant_accessor, alias: 'MyClassAlias' } filtered_constants: class: ConstantsClass tags: - { name: twig.constant_accessor, matches: '/^RULE_/' } # matches accept an regexp compatible with the preg_match function
Or you can use the #[AsTwigConstantAccessor]
attribute on your class :
use JDecool\Bundle\TwigConstantAccessorBundle\Annotation\AsTwigConstantAccessor; #[AsTwigConstantAccessor] class MyClass { // ... }
After you can access your class constant in your templates :
{{ ServiceClass.MY_CONSTANT }} {{ MyClassAlias.KEY }} {% if 'value' == ServiceClass.My_CONSTANT %}Test is OK{% endif %}