如何为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
相关产品推荐
相关产品推荐

