Skip to content

Instantly share code, notes, and snippets.

@ThijsFeryn
Created September 2, 2019 15:15
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 ThijsFeryn/2b1fbf8ef07996fbaa32911e81ba55eb to your computer and use it in GitHub Desktop.
Save ThijsFeryn/2b1fbf8ef07996fbaa32911e81ba55eb to your computer and use it in GitHub Desktop.
Twig extension for edgestash
<?php
namespace App\EdgestashBundle;
use Symfony\Component\HttpFoundation\RequestStack;
use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;
use Twig\TwigFunction;
class TwigExtension extends AbstractExtension
{
private $requestStack;
public function __construct(RequestStack $requestStack)
{
$this->requestStack = $requestStack;
}
public function getFilters()
{
return [
new TwigFilter('edgestash', [$this, 'edgestashFilter']),
];
}
public function getFunctions()
{
return [
new TwigFunction('isEdgestash', [$this, 'isEdgestash']),
new TwigFunction('edgestash', [$this, 'edgestashFunction']),
];
}
public function edgestashFilter(string $value, string $name, ?string $url = null): string
{
if(!$this->isEdgestash()) {
return $value;
}
if(null !== $url) {
$urls = $this->requestStack->getCurrentRequest()->attributes->get('edgestash-json-urls',[]);
$urls[] = $url;
$this->requestStack->getCurrentRequest()->attributes->set('edgestash-json-urls',$urls);
}
return '{{ '.$name.' }}';
}
public function edgestashFunction(string $name, ?string $url = null): string
{
return $this->edgestashFilter('',$name,$url);
}
public function isEdgestash(): bool
{
return (bool)$this->requestStack->getCurrentRequest()->attributes->get('edgestash');
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment