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