使用 Smarty 3 将 Smarty 变量分配给 PHP
Assign Smarty variable to PHP with Smarty 3
我使用的商店系统已从 smarty 2 更新到 smarty 3,这导致我们网站上出现了一系列问题。最糟糕的是,我们在 PHP 中指定使用它们的所有 Smarty 变量都不再起作用了。
一个简短的例子:
{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"
None 所有这些 "solutions" 我在 Smarty 3 之后找到了工作。
无论出于何种原因,上述 none 项都奏效了。我现在将 {PHP} 标签中的代码外包到外部 PHP 文件中,然后将函数的 return 返回给 smarty。
下面我举了一个例子,供大家参考(不要忘记将 PHP 文件添加到 index.php 或其他文件中):
我想从数据库中获取有关产品的一些信息,但只有 smarty 中给出的 {$module_data.PRODUCTS_ID}
。
所以在我使用 smarty 标签的文件中,我将这个变量发送到 PHP 中的函数:{$module_data.PRODUCTS_ID|@get_random_function}
然后在我的外部 PHP 文件中执行我的 PHP 函数和 return 我需要的数据:
function get_random_function($products_id)
{
$t_sql = $sql = "SELECT * FROM products WHERE products_id='".$products_id."'";
$retval = mysql_query($t_sql);
$row = mysql_fetch_assoc($retval);
return $row['gm_needed_data'];
}
现在 {$module_data.PRODUCTS_ID|@get_random_function}
输出我的 PHP 函数的 return。
我使用的商店系统已从 smarty 2 更新到 smarty 3,这导致我们网站上出现了一系列问题。最糟糕的是,我们在 PHP 中指定使用它们的所有 Smarty 变量都不再起作用了。
一个简短的例子:
{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"
None 所有这些 "solutions" 我在 Smarty 3 之后找到了工作。
无论出于何种原因,上述 none 项都奏效了。我现在将 {PHP} 标签中的代码外包到外部 PHP 文件中,然后将函数的 return 返回给 smarty。
下面我举了一个例子,供大家参考(不要忘记将 PHP 文件添加到 index.php 或其他文件中):
我想从数据库中获取有关产品的一些信息,但只有 smarty 中给出的 {$module_data.PRODUCTS_ID}
。
所以在我使用 smarty 标签的文件中,我将这个变量发送到 PHP 中的函数:{$module_data.PRODUCTS_ID|@get_random_function}
然后在我的外部 PHP 文件中执行我的 PHP 函数和 return 我需要的数据:
function get_random_function($products_id)
{
$t_sql = $sql = "SELECT * FROM products WHERE products_id='".$products_id."'";
$retval = mysql_query($t_sql);
$row = mysql_fetch_assoc($retval);
return $row['gm_needed_data'];
}
现在 {$module_data.PRODUCTS_ID|@get_random_function}
输出我的 PHP 函数的 return。