Twig instanceof for inheritance objects
propel, single-table-inheritance, symfony, twig
Solution
I share the opinion, that `instanceof` is nothing that should appear in a template. I use twig-tests for this case
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; })
];
}
}
And in the template
{% if event is birthday %}{# do something #}{% endif %}
Problem
I am using the following feature from propel http://www.propelorm.org/documentation/09-inheritance.html. I am also using Symfony2 and Twig I have a class structure using the above feature that looks something like this ``` class Event {} class Birthday extends Event {} class Walking extends Event {} ``` now I pass an event object to a twig template and I want to know what type of event it is For instance I want to display an image of a cake if its a birthday and I want to display map routes if its walking event. I cannot use instanceof in Twig as this feature does not exist. Does anyone now why this does not exist? and is there a way I can replicate this functionality without having to do something like ``` public function getType() ``` in each class, or ``` public function isBirthday() ``` in the event class. I found this on github but it is of no use to me. I have commented on their to see if I can get an answer. https://github.com/fabpot/Twig/issues/553