我正在为一项小型ORM工作,基于 Active Record 系统。因此,所有模型都扩展了生成的基本模型(例如:Foo
将扩展BaseFoo
,抽象BaseFoo
类将由命令生成。
抽象模型生成基于Twig模板,包括其他模板的一些部分(属性,getter和setter,主要方法等)。
但是ORM必须处理一个行为系统。所以行为应该能够装饰主模板。但是使用Twig分层布局系统,我找不到通过在主模板中注入一些线来正确装饰我的模板的方法。我可以使用embed
标记处理它,调用基本模板并覆盖blocks
。但是当存在多个行为时,该想法会失败,因为embed
标记会重写主模板,因此它会写入模型的两倍(class BaseFoo { code overrided by behavior1 } class BaseFoo { code overrided by behavior2 }
。
我考虑过创建一些新标签:replace "line" by "line"
,append "line" after "line"
或prepend "line" before "line"
。但我想确保没有更好的方法来装饰Twig模板,例如,逐个生成所有行为的模板:第一个行为将覆盖主模板,下一个行为将覆盖以前的行为通过调用Twig函数template_from_string()
生成模板。
您如何看待装饰Twig模板的可能性?