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

如何为Twig的oro_widget_render方法添加CSS类或移除容器div?

解决Oro Twig中oro_widget_render添加CSS类/移除容器div的问题

一、添加CSS类到容器div

你之前尝试的attr/cssClass/class参数不属于Oro widget容器的标准配置项,这些参数会被当作自定义数据存入容器的data属性,异步加载完成后会被替换,因此无法生效。

正确的方式是使用wrapper_attr参数,它专门用于配置widget外层容器的HTML属性:

{{ oro_widget_render({
     'widgetType': 'block',
     'url': path('test_user_face', {id: user.id}),
     'alias': 'test-user-face',
     'wrapper_attr': {'class': 'widget-container-user-face'}
}) }}

这个参数会直接将CSS类添加到widget生成的外层div上,且不会被异步加载过程覆盖。

二、移除生成的容器div

有两种常用方法可以移除默认的外层容器div:

方法1:禁用容器包装

调用oro_widget_render时添加wrapper: false参数,这样widget会直接渲染内容,不生成外层div:

{{ oro_widget_render({
     'widgetType': 'block',
     'url': path('test_user_face', {id: user.id}),
     'alias': 'test-user-face',
     'wrapper': false
}) }}

方法2:自定义widget模板

复制Oro默认的block类型widget模板(通常路径为@OroWidget/Resources/views/widget/block.html.twig),去掉外层的div容器,保存为自定义模板(比如YourBundle:Widget:custom_block.html.twig),然后在调用时指定模板路径:

{{ oro_widget_render({
     'widgetType': 'block',
     'url': path('test_user_face', {id: user.id}),
     'alias': 'test-user-face',
     'template': 'YourBundle:Widget:custom_block.html.twig'
}) }}

自定义模板示例(仅保留内容渲染):

{{ widget.content|raw }}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 09:07:20