maduser / argon-twig
Twig integration for the Argon runtime stack.
Requires
- php: ^8.2
- maduser/argon-container: ^1.0
- twig/twig: ^3.20
Requires (Dev)
- dealerdirect/phpcodesniffer-composer-installer: ^1.1
- phpunit/phpunit: ^11.5
- slevomat/coding-standard: ^8.24
- squizlabs/php_codesniffer: ^4.0
- vimeo/psalm: ^6.13
README
Twig integration for the Argon runtime stack.
Installation
composer require maduser/argon-twig
Registration
Register the service provider in your application composition layer:
use Maduser\Argon\Twig\Provider\TwigServiceProvider; $container->register(TwigServiceProvider::class);
The provider registers:
Twig\EnvironmentTwig\Loader\FilesystemLoaderMaduser\Argon\Twig\TemplatePathRegistryMaduser\Argon\Twig\Config\TwigConfig
Existing container definitions are not replaced.
Template Paths
By convention, the provider uses resources/templates below the basePath container parameter:
$container->getParameters()->set('basePath', dirname(__DIR__));
You can override the default path explicitly:
use Maduser\Argon\Twig\Config\TwigParameter; $container->getParameters()->set(TwigParameter::DEFAULT_PATH, __DIR__ . '/../templates');
Module providers can add namespaced template paths:
use Maduser\Argon\Container\AbstractServiceProvider; use Maduser\Argon\Container\ArgonContainer; use Maduser\Argon\Twig\TemplatePathRegistry; final class AuthServiceProvider extends AbstractServiceProvider { #[\Override] public function register(ArgonContainer $container): void { $registry = $container->get(TemplatePathRegistry::class); $registry->addPath(__DIR__ . '/resources/templates', 'auth'); } }
Templates in that folder can then be rendered with Twig's namespace syntax:
$html = $twig->render('@auth/login.html.twig');
Configuration
All configuration is optional and uses container parameters:
use Maduser\Argon\Twig\Config\TwigParameter; $parameters = $container->getParameters(); $parameters->set(TwigParameter::DEBUG, true); $parameters->set(TwigParameter::AUTO_RELOAD, true); $parameters->set(TwigParameter::STRICT_VARIABLES, true); $parameters->set(TwigParameter::CACHE, dirname(__DIR__) . '/storage/cache/twig');
TwigParameter::CACHE accepts a string path or false.
Boundaries
This package only wires Twig into an Argon container. It does not define view responses, controller conventions, template inheritance rules, asset handling, or module discovery.
Quality Gates
composer check composer test:coverage composer psalm composer phpcs