Skip to content
This repository was archived by the owner on Jan 24, 2024. It is now read-only.

Commit 10191ab

Browse files
committed
M structure navigation
1 parent 9f99925 commit 10191ab

File tree

3 files changed

+27
-7
lines changed

3 files changed

+27
-7
lines changed

source/NavigationBuilder/Bootloaders/NavigationBootloader.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class NavigationBootloader extends Bootloader
2929
*/
3030
public function defaultNavigation(Navigation $navigation, DefaultRenderer $renderer)
3131
{
32-
$navigation->setRenderer($renderer);
32+
$navigation->withRenderer($renderer);
3333

3434
return $navigation;
3535
}

source/NavigationBuilder/Builders/HtmlBuilder.php

+21-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace Spiral\NavigationBuilder\Builders;
44

5+
use Spiral\NavigationBuilder\Database\Sources\TreeSource;
6+
use Spiral\NavigationBuilder\DefaultRenderer;
57
use Spiral\NavigationBuilder\RendererInterface;
68

79
class HtmlBuilder extends StructureBuilder
@@ -10,13 +12,30 @@ class HtmlBuilder extends StructureBuilder
1012
private $renderer;
1113

1214
/**
13-
* @param RendererInterface $renderer
15+
* HtmlBuilder constructor.
16+
*
17+
* @param TreeSource $source
18+
* @param DefaultRenderer $renderer
1419
*/
15-
public function setRenderer(RendererInterface $renderer)
20+
public function __construct(TreeSource $source, DefaultRenderer $renderer)
1621
{
22+
parent::__construct($source);
23+
1724
$this->renderer = $renderer;
1825
}
1926

27+
/**
28+
* @param RendererInterface $renderer
29+
* @return HtmlBuilder
30+
*/
31+
public function withRenderer(RendererInterface $renderer): HtmlBuilder
32+
{
33+
$builder = clone $this;
34+
$builder->renderer = $renderer;
35+
36+
return $builder;
37+
}
38+
2039
/**
2140
* @param string $domain
2241
* @return string

source/NavigationBuilder/Navigation.php

+5-4
Original file line numberDiff line numberDiff line change
@@ -49,23 +49,24 @@ public function __construct(
4949
RendererInterface $renderer,
5050
Storage $storage
5151
) {
52+
$htmlBuilder = $htmlBuilder->withRenderer($renderer);
53+
5254
$this->treeBuilder = $treeBuilder;
5355
$this->htmlBuilder = $htmlBuilder;
5456
$this->structureBuilder = $structureBuilder;
5557
$this->storage = $storage;
56-
57-
$this->setRenderer($renderer);
58+
$this->renderer = $renderer;
5859
}
5960

6061
/**
6162
* @param RendererInterface $renderer
6263
* @return Navigation
6364
*/
64-
public function setRenderer(RendererInterface $renderer): Navigation
65+
public function withRenderer(RendererInterface $renderer): Navigation
6566
{
6667
$navigation = clone $this;
6768
$navigation->renderer = $renderer;
68-
$navigation->htmlBuilder->setRenderer($renderer);
69+
$navigation->htmlBuilder = $navigation->htmlBuilder->withRenderer($renderer);
6970

7071
return $navigation;
7172
}

0 commit comments

Comments
 (0)