问题描述
需要:从数据库加载的动态模板
我需要通过“模板插件”呈现一个JSON对象,该模板对象将来自数据库(在应用程序本身之外定义)。仅当插件存在时,才会应用该插件。
对于此示例,假设我具有“预订”类型的该对象,其中包含“航班”类型的子对象:
{
"id": "ABC-XYZ","reservationDate": "2020-09-23","state": "paid","flight":
{
"origin": "BCN","destination": "MAD","airline": "VY"
}
}
规则
示例“所需”输出
示例1.没有可用的插件
样本2。提供插件“ reservation”。用绿色解释状态。同时删除ID的冗余数据
示例3。与2相同,但还有插件“飞行”可用,能够处理飞行块。格式化文本并查询航空公司的全名
示例4.可用的插件“航班”,能够处理航班,又知道起点和目的地是“机场”,并将它们传递给相应的嵌套“机场”插件,因为它们是“可重复使用的”对象不仅在“飞行”插件中,而且在应用程序的许多其他位置中也是如此,因此它们被定义为appart
我已经探索过的东西
我知道通过'include'可以做到。但是,让我们看一下“使用”和“包含”之间的区别:
在树枝中include
和use
之间的主要区别在于:
-
在
include
模板中,它是直接“插入”的HTML,您可以在其中使用{{ }}
运算符进行打印,并使用{% %}
进行控制流(设置变量,如果,fors等)。渲染器将直接对其进行处理。但是禁止通过{% block myNiceBlock %}
定义新的块。 -
“使用”模板时,该模板已预加载,并且允许使用块。没有渲染包含的块。然后,从调用方使用{{block('whatever'}}}告诉渲染器去渲染该特定块。
“包含”更为基本。 use
允许水平重用,并允许其自身与父块调用的其他子块自动组织,全部都在一个文件中。
例如,在机场示例中,如果有N张图像,则在include
中,您应该将包装器HTML直接放入文件中,进行循环并在循环内部编写内部HTML。
您将使用use
块代替airport
方法,该块依次循环遍历图像,并仅调用在同一文件的另一个块中定义的airportimage
块,从而简化了编码。
要求
问题
发现要调用的“哪个”插件不是问题。假设在此示例中,任何人(控制器,树枝本身,实际上是任何人)都可以发现某个地方存在“预订”插件。如何在页面上use
? reservation
呈现时,“询问是否有航班插件”可用。如果没有,则全部交给YAML。如果是,那么如何动态地将预订告知use
航班?
简而言之:如何强制模板动态地use
(不是include
)模板又来自数据库(而不是来自固定文件)?
注意:如果此信息有用:我正在将Symfony 5与webpack一起使用。
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)