You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Vue组件的slot中插入Twig模板内容

可以实现,Twig是服务端模板,会在服务端预先渲染为纯HTML字符串后才返回至前端,你只需要将渲染后的HTML内容传入Vue组件的插槽即可,常用两种实现方案如下:

方案1:内联嵌入Twig模板

如果你的Vue组件所在的页面本身就是由Twig渲染输出的,直接将Twig模板嵌入到plan组件的标签内部即可:

<plan
    v-if="isPlanVisible"
    @closePlan="closePlan"
>
    {% include 'plan.html.twig' %}
</plan>

注意:该方案仅适用于Vue模板和Twig模板在同一服务端项目中混合部署的场景,如果是前后端完全分离的项目,请使用第二种方案。

方案2:接口请求获取渲染后的HTML
  1. 先修改example.vue的代码,在插槽中新增动态HTML渲染容器,使用v-html指令渲染返回的内容:
<plan
    v-if="isPlanVisible"
    @closePlan="closePlan"
>
    <div v-html="planTwigHtml"></div>
</plan>
  1. 在Vue的逻辑部分新增响应式变量和请求逻辑,打开弹窗时调用服务端接口获取Twig渲染结果:
export default {
  data() {
    return {
      isPlanVisible: false,
      planTwigHtml: ''
    }
  },
  methods: {
    async showPlan() {
      // 请求服务端接口,接口返回plan.html.twig渲染后的纯HTML内容
      const response = await fetch('/api/render-plan-twig')
      this.planTwigHtml = await response.text()
      this.isPlanVisible = true
    },
    closePlan() {
      this.isPlanVisible = false
      this.planTwigHtml = ''
    }
  }
}
  1. 服务端新增对应接口,逻辑仅为渲染plan.html.twig,将渲染后的HTML字符串直接返回即可。

安全提示:如果Twig渲染的HTML中包含用户提交的不可信内容,使用v-html会存在XSS注入风险,请提前对内容做安全过滤。

内容的提问来源于stack exchange,提问作者Valera

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 17:45:09