vendor/shopware/core/Framework/Adapter/Twig/TokenParser/ExtendsTokenParser.php line 31

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Shopware\Core\Framework\Adapter\Twig\TokenParser;
  3. use Shopware\Core\Framework\Adapter\Twig\TemplateFinder;
  4. use Twig\Node\Node;
  5. use Twig\Parser;
  6. use Twig\Token;
  7. use Twig\TokenParser\AbstractTokenParser;
  8. final class ExtendsTokenParser extends AbstractTokenParser
  9. {
  10.     /**
  11.      * @var Parser
  12.      */
  13.     protected $parser;
  14.     /**
  15.      * @var TemplateFinder
  16.      */
  17.     private $finder;
  18.     public function __construct(TemplateFinder $finder)
  19.     {
  20.         $this->finder $finder;
  21.     }
  22.     /**
  23.      * @return Node
  24.      */
  25.     public function parse(Token $token)
  26.     {
  27.         //get full token stream to inject extends token for inheritance
  28.         $stream $this->parser->getStream();
  29.         $source $stream->getSourceContext()->getName();
  30.         $template $stream->next()->getValue();
  31.         //resolves parent template
  32.         //set pointer to next value (contains the template file name)
  33.         $parent $this->finder->find($templatefalse$source);
  34.         //set pointer to end of line - BLOCK_END_TYPE
  35.         $stream->next();
  36.         $stream->injectTokens([
  37.             new Token(Token::BLOCK_START_TYPE''2),
  38.             new Token(Token::NAME_TYPE'extends'2),
  39.             new Token(Token::STRING_TYPE$parent2),
  40.             new Token(Token::BLOCK_END_TYPE''2),
  41.         ]);
  42.         return new Node();
  43.     }
  44.     public function getTag(): string
  45.     {
  46.         return 'sw_extends';
  47.     }
  48. }