我正在使用 propel http://www.propelorm.org/documentation/09-inheritance.html 的以下功能.
我也在使用 Symfony2 和 Twig
我有一个使用上述功能的类结构,看起来像这样
class Event {}
class Birthday extends Event {}
class Walking extends Event {}
现在我将一个事件对象传递给一个 Twig 模板,我想知道它是什么类型的事件
例如,如果是生日,我想显示蛋糕的图像,如果是步行事件,我想显示 map 路线。
我不能在 Twig 中使用 instanceof,因为此功能不存在。
有谁现在为什么这不存在?
有没有办法我可以复制这个功能而不必做类似的事情
public function getType()
在每个类(class),或
public function isBirthday()
在事件类中。
我在 github 上找到了这个,但它对我没有用。我已经对他们发表了评论,看看我是否能得到答案。
https://github.com/fabpot/Twig/issues/553
最佳答案
我同意 instanceof
不是应该出现在模板中的东西。我在这种情况下使用 twig-tests
class MyTwigExtension extends TwigExtension
{
public function getTests ()
{
return [
new \Twig_SimpleTest('birthday', function (Event $event) { return $event instanceof Birthday; }),
new \Twig_SimpleTest('walking', function (Event $event) { return $event instanceof Walking; })
];
}
}
并且在模板中
{% if event is birthday %}{# do something #}{% endif %}
关于symfony - 用于继承对象的 Twig instanceof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10113442/