我使用从smarty 2更新到smarty 3的商店系统,这导致了我们网站上的问题列表。最糟糕的是我们分配给PHP使用它们的所有Smarty变量都不能工作了。使用Smarty 3将Smarty变量赋值给PHP
一个简单的例子:
{assign var=test value=$ORDER_NUMBER}
{php}
$order = $this->get_template_vars('test');
echo $order;
{/php}
这将导致以下错误:
FATAL ERROR(1): "Using $this when not in object context"
现在的Smarty的页面,我发现一些代码行做同样的,但看上去有点不同的,例如,这一个:
$order = $smarty->getTemplateVars('test');
这导致:
FATAL ERROR(1): "Call to a member function getTemplateVars() on null"
所有这些“解决方案”没有,我发现工作不再因为Smarty的3
'get_template_vars()'被弃用使用'getTemplateVars()'并确保在这行之前:'$ smarty-> getTemplateVars('test')'初始化了你的smarty对象。 –
'php'-tag在smarty3中也被废弃了,你应该使用可用的可能性来扩展smarty来替换你对'php'-blocks的用法和自定义块/函数/ ... –
你的第二种方法应该使用$聪明的变数。如果不是,也许尝试把全球性的$ smarty;在你的代码之前。但是,您的代码很糟糕,非常过时,需要随时更改。在smarty的下一个版本中,它可能根本不会工作。 –