<?php
namespace App\Twig;
use Twig\Environment;
use Twig\Extension\AbstractExtension;
use Twig\Extension\CoreExtension;
use Twig\TwigFunction;
use function array_merge;
class ComponentExtension extends AbstractExtension
{
protected Environment $twig;
protected CoreExtension $coreExtension;
public function __construct(Environment $twig)
{
$this->twig = $twig;
}
public function getFunctions(): array
{
return [
new TwigFunction('component', function ($component, $variables = [], $options = []) {
$options = array_merge([
'withContext' => false,
'ignoreMissing' => false,
'sandboxed' => false,
'context' => []
], $options);
return twig_include(
$this->twig,
$options['context'],
$component . '/' . $component . '.twig',
$variables,
$options['withContext'],
$options['ignoreMissing'],
$options['sandboxed']
);
}, [
'is_safe' => ['html']
])
];
}
}