Как подсчитать количество раз, когда класс появляется на странице с TWIG? - PullRequest
0 голосов
/ 19 июня 2020

У меня есть страница в формате «. html .twig», где есть класс:

  • myclass1
  • myclass2

Как Могу ли я посчитать с помощью TWIG, количество классов myclass1 и количество классов myclass2?

https://twig.symfony.com/doc/3.x/

mypage. html .twig

<div class="myclass1">text</div>
<div class="myclass2">text</div>
<div class="myclass1">text</div>
<div class="myclass1">text</div>
<div class="myclass2">text</div>
<div class="myclass2">text</div>
<div class="myclass2">text</div>
<div class="myclass1">text</div>

1 Ответ

0 голосов
/ 20 июня 2020

Создайте TwigExtension, который считает и возвращает класс

<?php
use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;

class AppExtension extends AbstractExtension
{
    protected $classes = [];

    public function getFunctions()
    {
        return [
            new TwigFunction('create_class', [$this, 'createClass']),
            new TwigFunction('count_class', [$this, 'countClass']),
        ];
    }

    public function createClass($class)
    {
        if (!isset($this->classes[$class])) $this->classes[$class] = 0;
        $this->classes[$class]++;
        return $class;
    }

    public function countClass($class) {
        return $this->classes[$class] ?? 0;
    }
}
<div class="{{ create_class('myclass1') }}">text</div>
<div class="{{ create_class('myclass2') }}">text</div>
<div class="{{ create_class('myclass1') }}">text</div>
<div class="{{ create_class('myclass1') }}">text</div>
<div class="{{ create_class('myclass2') }}">text</div>
<div class="{{ create_class('myclass2') }}">text</div>
<div class="{{ create_class('myclass2') }}">text</div>
<div class="{{ create_class('myclass1') }}">text</div>

myclass1 count: {{ class_count('myclass1') }}
myclass2 count: {{ class_count('myclass2') }}

Примечание: не тестировал это, но он должен дать вам основной жест

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...