从Twig中的对象读取时添加回调

时间:2015-06-08 15:23:38

标签: symfony twig

假设我有一个名为Entity的基本实体,它被映射到数据库表。该实体有两个属性:propertyApropertyB

这个实体的一个特点是,尽管我们可以在这些属性中存储我们想要的任何内容,但在使用propertyB的Twig模板上使用entity.propertyB的值时,我们希望系统地将值截断为100字符。

现在,这在几个方面是完全可行的:

  • 直接在getPropertyB()方法中截断值;
  • 注册Twig扩展并创建专用过滤器;
  • 在实体上添加生命周期回调,以在实际创建对象之前截断该值。

由于这严格来说是显示规则,而不是我们实体的业务规则,因此第二种解决方案似乎是最好的恕我直言。但是,它要求我们每次需要在模板中使用propertyB的值时应用过滤器。如果一个不知情的开发人员过来,那么该值可能不会被截断。

所以我的问题是:有没有办法注册某种类型的回调,严格限制在包含我们实体的视图模型中,这样我们就可以在其某些属性上动态应用一些过滤器?

1 个答案:

答案 0 :(得分:0)

由于您永远不需要访问超过100个字符的任何内容,因此可以在其setter中截断该属性。这并没有真正污染实体代码,因为这是它固有的一些逻辑。