在Smarty中的URLEncode

时间:2014-06-09 21:58:22

标签: smarty

我编写了一个代码来缩短我的网址但在网址编码过程中遇到问题,因为该网址使用 {$CWunschliste->cURLID}

来调用ID
{php}$short = file_get_contents('http://ur.l/api.php?url=' . urlencode({$ShopURL}/index.php?wlid={$CWunschliste->cURLID}));{/php}

{php}$url=json_decode($short,TRUE);{echo $url['short'];}{/php}

如何重写网址编码以调用{$CWunschliste->cURLID}

1 个答案:

答案 0 :(得分:2)

如果在Smarty模板中使用{php}标签,则应放置PHP代码,因此不能使用Smarty语法。您的代码应该如下所示:

{php}
$short = file_get_contents('http://ur.l/api.php?url=' . urlencode($this->getTemplateVars('ShopURL').'/index.php?wlid='.$this->getTemplateVars('CWunschliste')->cURLID));

$url=json_decode($short,TRUE);
echo $url['short'];
{/php}

但是你不应该这样做。你应该用PHP做这些事情。 Smarty仅用于显示视图,而不是用于从远程URL或其他模型任务获取数据。

此外,{php}标记已弃用,只能在SmartyBC类中使用。

修改

我忘记从答案中删除{(已修复)但即使在这种情况下我也收到以下错误

  

不在对象上下文中时使用$ this

这真的很奇怪,因为如果你在这个例子中查看Smarty php tag example,这就用来访问Smarty对象。

然而,工作解决方案会将$this更改为$template(我必须强调$ template在这种情况下不是在PHP中创建的Smarty对象的名称 - 我创建了Smarty对象{{ 1}}但在$smarty标签中,我必须使用{php})访问Smarty。

以下代码适合您:

$template