繁体   English   中英

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

[英]Adding a callback when reading from an object in Twig

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

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

现在,这可以通过多种方式完全实现:

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

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

所以我的问题是:是否有一种方法可以注册某种回调,严格限制在包装我们实体的视图模型中,这将允许我们在其某些属性上即时应用一些过滤器?

由于您永远不需要访问超过100个字符的内容,因此可以在其设置程序中截断该属性。 这实际上并不会污染实体代码,因为这是其固有的逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM