举个例子,如果我们将一个表对象传递给twig视图,我们如何获得该对象的类名,例如“Table”。
class Table{
}
$table = new Table();
在树枝中:
{{ table.className }}
---> 这应该显示“表格”
如果您不想将其作为实体上的方法,如下所示:
public function getClassName()
{
return (new \ReflectionClass($this))->getShortName();
}
然后你可以创建一个 Twig 函数或过滤器。这是一个函数:
class ClassTwigExtension extends \Twig_Extension
{
public function getFunctions()
{
return array(
'class' => new \Twig_SimpleFunction('class', [$this, 'getClass'])
);
}
public function getName()
{
return 'class_twig_extension';
}
public function getClass($object)
{
return (new \ReflectionClass($object))->getShortName();
}
}
像这样使用:
{{ class(table) }}
在 \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') %}
nurikabe 的答案略有更新:
use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;
class ClassTwigExtension extends AbstractExtension
{
public function getFunctions()
{
return [
new TwigFunction('get_class', 'get_class'),
];
}
public function getName()
{
return 'class_twig_extension';
}
}
像这样使用:
{{ get_class(table) }}