如何在Sulu Twig模板中通过内容ID获取页面URL
在Sulu Twig模板中通过内容ID获取页面URL的方法
在Sulu中创建页面链接时,<sulu-link />标签能满足多数场景,但有时仅需获取纯URL(比如传递给JavaScript函数或用作表单action)。Sulu v2.5中依赖sulu_content_load返回的urls属性生成URL的方法,在v2.6中因该属性被移除而失效;直接硬编码资源定位符的话,后台修改定位符会导致URL失效。
针对这个问题,Sulu v2.6及后续版本提供了两种可靠的解决方法:
方法一:通过内容对象生成URL
先加载指定ID的内容对象,再用sulu_content_url函数生成对应语言的URL:
{% set termsAgreement = sulu_content_load('123-123-123-123') %} {% set termsAgreementUrl = sulu_content_url(termsAgreement, request.defaultLocale) %}
也可以合并为一行代码:
{% set termsAgreementUrl = sulu_content_url(sulu_content_load('123-123-123-123'), request.defaultLocale) %}
方法二:直接通过内容ID生成URL(更高效)
如果不需要加载完整的内容对象,可直接用sulu_route函数通过内容ID和语言生成URL,避免不必要的内容加载:
{% set termsAgreementUrl = sulu_route('123-123-123-123', request.defaultLocale) %}
以上两种方法都会自动适配后台修改的资源定位符,确保URL始终有效,无需手动维护硬编码路径。
内容的提问来源于stack exchange,提问作者Mario A
相关产品推荐
相关产品推荐

