Completed
Push — master ( 3b97d6...5a7ca1 )
by Pavel
08:11 queued 11s
created

DataGridExtension::callFunction()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 3
nc 2
nop 3
dl 0
loc 6
rs 10
c 0
b 0
f 0
1
<?php
2
3
4
namespace Pfilsx\DataGrid\Twig;
5
6
7
use Pfilsx\DataGrid\Grid\DataGrid;
8
use Symfony\Component\HttpFoundation\RequestStack;
9
use Twig\Environment;
10
use Twig\Extension\AbstractExtension;
11
use Twig\TwigFunction;
12
13
class DataGridExtension extends AbstractExtension
14
{
15
    const DEFAULT_TEMPLATE = '@DataGrid/grid.blocks.html.twig';
16
    protected $requestStack;
17
18
    public function __construct(RequestStack $requestStack)
19
    {
20
        $this->requestStack = $requestStack;
21
    }
22
23
    public function getFunctions(): array
24
    {
25
        return [
26
            new TwigFunction('grid_view', [$this, 'generateGrid'], [
27
                'needs_environment' => true,
28
                'is_safe' => ['html']
29
            ]),
30
        ];
31
    }
32
33
    public function generateGrid(Environment $environment, DataGrid $grid, array $attributes = [])
34
    {
35
        $template = $grid->getTemplate();
36
        if (!$template->hasBlock('grid_table', [])) {
37
            $template = $environment->loadTemplate(self::DEFAULT_TEMPLATE);
38
            $grid->setTemplate($template);
39
        }
40
        return $template->renderBlock('grid_table', [
41
            'attr' => $attributes,
42
            'data_grid' => $grid,
43
            'request' => $this->requestStack->getCurrentRequest()
44
        ]);
45
    }
46
}
47