Skip to content

Commit 2bb3c64

Browse files
Practice 10: Twig extentions
1 parent dea4c95 commit 2bb3c64

File tree

3 files changed

+44
-1
lines changed

3 files changed

+44
-1
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
namespace App\Twig\Extensions;
4+
5+
use Twig\Extension\AbstractExtension;
6+
use Twig\TwigFilter;
7+
8+
final class DinosaurExtension extends AbstractExtension
9+
{
10+
/**
11+
* {@inheritDoc}
12+
*/
13+
public function getFilters(): array
14+
{
15+
return [
16+
new TwigFilter('adultOnly', [DinosaurRuntime::class, 'onlyAdult']),
17+
];
18+
}
19+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace App\Twig\Extensions;
6+
7+
use App\Entity\Dinosaur;
8+
use Twig\Extension\RuntimeExtensionInterface;
9+
10+
class DinosaurRuntime implements RuntimeExtensionInterface
11+
{
12+
/**
13+
* @param Dinosaur[] $dinosaurs
14+
*
15+
* @return Dinosaur[]
16+
*/
17+
public function onlyAdult(array $dinosaurs): array
18+
{
19+
return array_filter(
20+
$dinosaurs,
21+
fn (Dinosaur $dinosaur): bool => $dinosaur->getAge() >= 18
22+
);
23+
}
24+
}

templates/dinosaurs-list.html.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
{% block body %}
1010
<main>
1111
<div class="list-group">
12-
{% for dinosaur in dinosaurs %}
12+
{% for dinosaur in dinosaurs|adultOnly %}
1313
<a class="list-group-item list-group-item-action d-flex gap-3 py-3"
1414
href="{{ path('app_single_dinosaur', {id: dinosaur.id}) }}"
1515
>

0 commit comments

Comments
 (0)