blob: 28aae13caa9b07785dff0787c50b8ef1cd9cbbef (
plain)
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
|
<?php
// src/view/HeaderBuilder.php
use App\Entity\Node;
class HeaderBuilder extends AbstractBuilder
{
private ?Node $nav = null;
private ?Node $breadcrumb = null;
public function __construct(Node $node)
{
// pas de useChildrenBuilder, il faudrait peut-être
$children = $node->getChildren();
foreach($children as $child)
{
if($child->getName() === 'nav'){
$this->nav = $child;
// actuellement le noeud nav ne contient aucune info utile et l'envoyer à NavBuilder est inutile
$nav_builder = new NavBuilder($this->nav);
$nav = $nav_builder->render();
}
elseif($child->getName() === 'breadcrumb'){
$this->breadcrumb = $child;
$breadcrumb_builder = new BreadcrumbBuilder($this->breadcrumb);
$breadcrumb = $breadcrumb_builder->render();
}
}
$viewFile = self::VIEWS_PATH . $node->getName() . '.php';
if(file_exists($viewFile))
{
// titre et description
if(!empty($node->getNodeData()->getData()))
{
extract($node->getNodeData()->getData());
}
// attributs, aucun pour l'instant
if(!empty($node->getAttributes()))
{
extract($node->getAttributes());
}
// header logo + réseaux sociaux
$targets = ['logo', 'facebook', 'instagram', 'fond_piscine'];
$i = 0;
foreach($node->getNodeData()->getImages() as $image)
{
if(str_contains($image->getFileName(), $targets[$i]))
{
$var = $targets[$i];
$$var = rtrim($image->getFilePathMini(), '/');
$var .= '_alt'; // ex: logo_alt
$$var = $image->getAlt();
}
$i++;
}
// générer HTML réseaux sociaux
//
ob_start();
require $viewFile;
$this->html .= ob_get_clean();
}
}
}
|