使用sulu_snippet_load_by_area获取snippet返回空或null的问题
问题原因及解决方法
核心原因
sulu_snippet_load_by_area 方法读取的是站点层级配置的对应区域默认snippet,和页面模板里直接绑定到页面的snippet字段是两套逻辑:
- 你没有在站点配置中给
banner区域分配对应snippet内容,所以返回null sulu_snippet_load_default读取的是snippet类型的全局默认值,需要给对应snippet类型单独配置全局默认值才会返回内容,没配置默认返回空数组content.snippet是你页面模板中配置的和当前页面绑定的snippet字段,直接读取当前页面的内容关联数据,不需要依赖站点层级的默认配置,所以可以正常获取值
解决步骤
- 登录Sulu后台,进入对应Webspace的「设置」→「Snippets」管理页,找到
banner区域,选择你要加载的snippet内容后保存设置 - 清理系统缓存,执行命令:
php bin/console cache:clear # 生产环境请使用 php bin/console cache:clear --env=prod
- 重新访问页面即可正常通过
sulu_snippet_load_by_area('banner')获取到配置的snippet内容
内容的提问来源于stack exchange,提问作者Mastop
相关产品推荐
相关产品推荐

