Как мы можем получить имя класса объекта сущности в представлении twig

В качестве примера, если мы передаем объект таблицы в представление twig, как мы можем получить имя класса этого объекта, например "Таблица".

class Table{

}

$table = new Table();

В Twig:

{{ table.className }} --- > это должно отображать "Таблица"

Ответы

Ответ 1

Если вы не хотите использовать этот метод для сущности следующим образом:

public function getClassName()
{
    return (new \ReflectionClass($this))->getShortName();
}

тогда вы можете создать функцию Twig или фильтр. Здесь функция:

class ClassTwigExtension extends \Twig_Extension
{
    public function getFunctions()
    {
        return array(
            'class' => new \Twig_SimpleFunction('class', array($this, 'getClass'))
        );
    }

    public function getName()
    {
        return 'class_twig_extension';
    }

    public function getClass($object)
    {
        return (new \ReflectionClass($object))->getShortName();
    }
}

Используйте так:

{{ class(table) }}

Ответ 2

В\Twig_Extension вы можете добавить тесты

public function getTests()
{
    return [
        'instanceof' =>  new \Twig_Function_Method($this, 'isInstanceof')
    ];
}

/**
 * @param $var
 * @param $instance
 * @return bool
 */
public function isInstanceof($var, $instance) {
    return  $var instanceof $instance;
}

И затем используйте как

{% if value is instanceof('DateTime') %}