symfony - 用于继承对象的 Twig instanceof

标签 symfony propel twig single-table-inheritance

我正在使用 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/

相关文章:

php - 推进 ORM : originating save() re-triggered in cascaded save

performance - Propel 2 和 Doctrine 2 有详细的比较吗

Twig - 遍历数组的一部分

symfony - Sylius + Vagrant + Behat 不工作

php - Symfony 5. EasyAdmin 3. VichUploader。同时上传多个文件

symfony - 什么是 symfony2 学说的 DAL 替代方案

php - Doctrine 映射问题 - 对 null 调用成员函数 setValue()

php - 使用 Propel 连接的名称属性

Twig :一年中的每个月

php - Symfony 模板 - 包括 css