Skip to content

Instantly share code, notes, and snippets.

@weaverryan
Created December 27, 2020 17:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save weaverryan/61f09456bcdace4fb857b55106eba439 to your computer and use it in GitHub Desktop.
Save weaverryan/61f09456bcdace4fb857b55106eba439 to your computer and use it in GitHub Desktop.
Serializer Extension from Vue part 2 Tutorial
<?php
namespace App\Twig;
use ApiPlatform\Core\Api\IriConverterInterface;
use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;
use Symfony\Component\Serializer\SerializerInterface;
class SerializerExtension extends AbstractExtension
{
private $serializer;
private $iriConverter;
public function __construct(SerializerInterface $serializer, IriConverterInterface $iriConverter)
{
$this->serializer = $serializer;
$this->iriConverter = $iriConverter;
}
public function getFilters(): array
{
return [
new TwigFilter('jsonld', [$this, 'serializeToJsonLd'], ['is_safe' => ['html']]),
new TwigFilter('iri', [$this, 'convertToIri'], ['is_safe' => ['html']]),
];
}
public function serializeToJsonLd($data): string
{
return $this->serializer->serialize($data, 'jsonld');
}
public function convertToIri(object $item): string
{
return $this->iriConverter->getIriFromItem($item);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment