首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Smarty中正确使用{$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI}?

如何在Smarty中正确使用{$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI}?
EN

Stack Overflow用户
提问于 2016-10-15 18:03:13
回答 1查看 2.6K关注 0票数 1

我在我的网站上有一个博客页面,它使用Smarty创建帖子,我想使用它向他们添加一个WhatsApp共享按钮。我已经在整个互联网上搜索过了,我发现了这个:

代码语言:javascript
复制
{$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI}

我现在正尝试在我的blog.tpl文件中使用这个:

代码语言:javascript
复制
<a class="whatsapp" href="whatsapp://send?text={$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI}">Compartilhar</a>

我的代码出了什么问题,我怎样才能修复它呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-15 18:37:14

由于以下几个原因,您的代码无法工作:

  • 很明显,您生成的消息不是URL。它读起来像是:stackoverflow/questions/40062450/...。URL以协议(通常是http://)开始。您发送的文本应该是: URI}
  • URL (如上述代码生成的URL )包含特殊字符,在另一个URL (f.e )中用作参数时必须对其进行编码。&)。当您希望将&用作URL中的参数时,未能正确编码它将导致生成与您想象不同的URL。Smarty为此提供了escape变量修饰符。
  • 生成HTML,因为有些字符在HTML中也很特殊,所以必须正确地对它们进行编码,否则生成的HTML可能无效,浏览器可能会认为URL的结束早于您的意愿。escape修饰符也在这里帮助您。

综合起来,最好的方法是将URL构建到单独的智能variable中,然后将其写入href属性中:

代码语言:javascript
复制
{!--
  * Generate the URL we want to send using WhatsApp
  * and store it in the $url Smarty variable
  * There is no encoding here
  * --}
{capture assign=url}{strip}
    http://{$smary.server.HTTP_HOST}{$smarty.server.REQUEST_URI}
{/strip}{/capture}

{!--
 * The URL to invoke the WhatsApp app (and ask it to send $url as message) is:
 *     whatsapp://send?text={$url|escape:url}
 * --}

{!--
 * Generate correct HTML that contains the correct whatsapp URL
 * that contains as parameter the URL generated in $url
 * --}
<a class="whatsapp" href="whatsapp://send?text={$url|escape:url|escape:html}">Compartilhar</a>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40062450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档