-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTemplates.php
More file actions
92 lines (77 loc) · 2.73 KB
/
Templates.php
File metadata and controls
92 lines (77 loc) · 2.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?php
declare(strict_types=1);
namespace ArrayAccess\TrayDigita\App\Modules\Core\SubModules\Templates;
use ArrayAccess\TrayDigita\App\Modules\Core\Abstracts\CoreSubmoduleAbstract;
use ArrayAccess\TrayDigita\App\Modules\Core\SubModules\Templates\Middlewares\TemplateMiddleware;
use ArrayAccess\TrayDigita\Kernel\Interfaces\KernelInterface;
use ArrayAccess\TrayDigita\Templates\Middlewares\TemplateLoaderMiddleware;
use ArrayAccess\TrayDigita\Templates\Wrapper;
use ArrayAccess\TrayDigita\Util\Filter\ContainerHelper;
final class Templates extends CoreSubmoduleAbstract
{
public const ACTIVE_TEMPLATE_KEY = 'active_template';
protected int $priority = 0;
private TemplateRule $templateRule;
protected string $name = 'Templates Helper';
public function getName(): string
{
return $this->translateContext(
'Templates Helper',
'module-info',
'core-module'
);
}
public function getDescription(): string
{
return $this->translateContext(
'Core module to support templating',
'module-info',
'core-module'
);
}
public function getTemplateRule(): TemplateRule
{
return $this->templateRule;
}
protected function doInit(): void
{
// @attach(kernel.afterInitModules)
$this->getManager()->attach('kernel.afterInitModules', [$this, 'initSetTemplate']);
}
private function initSetTemplate($module, KernelInterface $kernel)
{
// @detach(kernel.afterInitModules)
$this->getManager()->detach('kernel.afterInitModules', [$this, 'initSetTemplate']);
if ($kernel->getConfigError()) {
return $module;
}
$view = $this->core->getView();
$templateRule = $view->getTemplateRule();
$wrapper = $templateRule?->getWrapper()
??ContainerHelper::service(Wrapper::class, $this->getContainer());
if (!$wrapper) {
return $module;
}
$this->templateRule = $templateRule instanceof TemplateRule
? $templateRule
: new TemplateRule($wrapper);
$this->templateRule->initialize();
$view->setTemplateRule($this->templateRule);
$kernel->getHttpKernel()->addDeferredMiddleware(
new TemplateMiddleware(
$view->getContainer()??$this->getContainer(),
$this
)
);
/**
* add middleware to load template.php
* @see TemplateLoaderMiddleware::doProcess()
*/
$kernel->getHttpKernel()->addDeferredMiddleware(
new TemplateLoaderMiddleware(
$view->getContainer()??$this->getContainer()
)
);
return $module;
}
}