Update 11-page-menu.md
This commit is contained in:
parent
1e5cd00b03
commit
6f91572434
1 changed files with 11 additions and 11 deletions
|
@ -21,7 +21,7 @@ But before we start, install the latest version of Twig with composer (`composer
|
||||||
Then create the a `TwigRenderer.php` in your `src/Template` folder that looks like this:
|
Then create the a `TwigRenderer.php` in your `src/Template` folder that looks like this:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
<?php
|
<?php declare(strict_types = 1);
|
||||||
|
|
||||||
namespace Example\Template;
|
namespace Example\Template;
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ class TwigRenderer implements Renderer
|
||||||
$this->renderer = $renderer;
|
$this->renderer = $renderer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function render($template, $data = [])
|
public function render($template, $data = []) : string
|
||||||
{
|
{
|
||||||
return $this->renderer->render("$template.html", $data);
|
return $this->renderer->render("$template.html", $data);
|
||||||
}
|
}
|
||||||
|
@ -123,7 +123,7 @@ We could create a global variable that is usable by all templates, but that is n
|
||||||
So instead we will use a custom renderer for the frontend. First we create an empty interface that extends the existing `Renderer` interface.
|
So instead we will use a custom renderer for the frontend. First we create an empty interface that extends the existing `Renderer` interface.
|
||||||
|
|
||||||
```php
|
```php
|
||||||
<?php
|
<?php declare(strict_types = 1);
|
||||||
|
|
||||||
namespace Example\Template;
|
namespace Example\Template;
|
||||||
|
|
||||||
|
@ -136,7 +136,7 @@ Now of course we also need a class that implements the new interface.
|
||||||
|
|
||||||
|
|
||||||
```php
|
```php
|
||||||
<?php
|
<?php declare(strict_types = 1);
|
||||||
|
|
||||||
namespace Example\Template;
|
namespace Example\Template;
|
||||||
|
|
||||||
|
@ -149,7 +149,7 @@ class FrontendTwigRenderer implements FrontendRenderer
|
||||||
$this->renderer = $renderer;
|
$this->renderer = $renderer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function render($template, $data = [])
|
public function render($template, $data = []) : string
|
||||||
{
|
{
|
||||||
$data = array_merge($data, [
|
$data = array_merge($data, [
|
||||||
'menuItems' => [['href' => '/', 'text' => 'Homepage']],
|
'menuItems' => [['href' => '/', 'text' => 'Homepage']],
|
||||||
|
@ -184,26 +184,26 @@ Right now the menu is defined in the array, but it is very likely that this will
|
||||||
So let's do the right thing here and start with an interface again. But first, create a new folder in the `src` directory for the menu related things. `Menu` sounds like a reasonable name, doesn't it?
|
So let's do the right thing here and start with an interface again. But first, create a new folder in the `src` directory for the menu related things. `Menu` sounds like a reasonable name, doesn't it?
|
||||||
|
|
||||||
```php
|
```php
|
||||||
<?php
|
<?php declare(strict_types = 1);
|
||||||
|
|
||||||
namespace Example\Menu;
|
namespace Example\Menu;
|
||||||
|
|
||||||
interface MenuReader
|
interface MenuReader
|
||||||
{
|
{
|
||||||
public function readMenu();
|
public function readMenu() : array;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
And our very simple implementation will look like this:
|
And our very simple implementation will look like this:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
<?php
|
<?php declare(strict_types = 1);
|
||||||
|
|
||||||
namespace Example\Menu;
|
namespace Example\Menu;
|
||||||
|
|
||||||
class ArrayMenuReader implements MenuReader
|
class ArrayMenuReader implements MenuReader
|
||||||
{
|
{
|
||||||
public function readMenu()
|
public function readMenu() : array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
['href' => '/', 'text' => 'Homepage'],
|
['href' => '/', 'text' => 'Homepage'],
|
||||||
|
@ -228,7 +228,7 @@ Now you need to change out the hardcoded array in the `FrontendTwigRenderer` cla
|
||||||
Did you finish it or did you get stuck? Or are you just lazy? Doesn't matter, here is a working solution:
|
Did you finish it or did you get stuck? Or are you just lazy? Doesn't matter, here is a working solution:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
<?php
|
<?php declare(strict_types = 1);
|
||||||
|
|
||||||
namespace Example\Template;
|
namespace Example\Template;
|
||||||
|
|
||||||
|
@ -245,7 +245,7 @@ class FrontendTwigRenderer implements FrontendRenderer
|
||||||
$this->menuReader = $menuReader;
|
$this->menuReader = $menuReader;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function render($template, $data = [])
|
public function render($template, $data = []) : string
|
||||||
{
|
{
|
||||||
$data = array_merge($data, [
|
$data = array_merge($data, [
|
||||||
'menuItems' => $this->menuReader->readMenu(),
|
'menuItems' => $this->menuReader->readMenu(),
|
||||||
|
|
Loading…
Reference in a new issue