{% page 8 of 43 in 'index.php?page=%page%' %}
Нужно, чтобы он сгенерировала
Paginator::generate(8,43,'index.php?page=%page%');
Сделал так:
class Twig_Paginator_TokenParser extends Twig_TokenParser {
public function getTag() {
return 'page';
}
public function parse(Twig_Token $token) {
$lineno = $token->getLine();
$iCurrent = $this->parser->getStream()->expect(Twig_Token::NUMBER_TYPE)->getValue();
$this->parser->getStream()->expect(Twig_Token::NAME_TYPE, 'of');
$iTotal = $this->parser->getStream()->expect(Twig_Token::NUMBER_TYPE)->getValue();
$this->parser->getStream()->expect(Twig_Token::NAME_TYPE, 'in');
$sLink = $this->parser->getStream()->expect(Twig_Token::STRING_TYPE)->getValue();
$this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE);
return new Twig_Paginator_Node($iCurrent, $iTotal, $sLink, $lineno, $this->getTag());
}
}
class Twig_Paginator_Node extends Twig_Node {
protected $iCurrent;
protected $iTotal;
protected $sLink;
public function __construct($iCurrent, $iTotal, $sLink, $lineno, $sTag)
{
parent::__construct();
$this->iCurrent = $iCurrent;
$this->iTotal = $iTotal;
$this->sLink = $sLink;
}
public function compile($compiler)
{
$compiler
->addDebugInfo($this)
->write('Paginator::generate("')
->raw($this->iCurrent)
->raw('", "')
->raw($this->iTotal)
->raw('", "')
->raw($this->sLink)
->raw('")')
->raw(";\n")
;
}
}
именно этот пример работает.
Но если я сделаю к примеру так:
{% page Current of Total in 'index.php?page=%page%' %}
То работать ясен хер не будет. Я не очень вкурил как происходит парсинг. Доку читал. И не смог сдеть так, как надо.