Exemple #1
0
 public function parse(\Twig_Token $token)
 {
     if (!$this->parser->isMainScope()) {
         throw new \Twig_Error_Syntax('Cannot extend from a block.', $token->getLine(), $this->parser->getFilename());
     }
     if (null !== $this->parser->getParent()) {
         throw new \Twig_Error_Syntax('Multiple extends tags are forbidden.', $token->getLine(), $this->parser->getFilename());
     }
     $this->parser->setParent($this->parser->getExpressionParser()->parseExpression());
     $this->parser->getStream()->expect(\Twig_Token::BLOCK_END_TYPE);
     if (Helper::hasBuffer($this->parser->getFilename())) {
         $parentName = $this->parser->getParent()->getAttribute('value');
         $name = $this->parser->getFilename();
         // If the parent has no buffer values, transfer them from the child template
         if (is_null(Helper::getBuffer($parentName))) {
             Helper::setBuffer($parentName, Helper::getBuffer($name));
         }
     }
 }