我已经创建了一个运行SQL查询的函数,输出数据就好了,问题是我现在无法做任何事情,因为我无法使输出到模板工作。
PHP代码:
function getCategories() {
try {
foreach($this->pdo->query("SELECT categories.cat_id, categories.cat_name, categories.cat_description FROM categories") as $row) {
$rows[] = $row;
}
} catch(PDOException $e) {
print "Error!:" . $e->getMessage();
return false;
}
return $rows;
$smarty = new Smarty();
$smarty->assign('categories', $rows);
}
这只是简单地回复:
用return $rows;
替换return $smarty->assign('categories', $rows);
只会呈现空白页。
我在模板中使用了这个:{$categories.cat_name}
任何人都可以帮我解决这个问题吗?
我试图使用Smarty重写一个易受攻击的糟糕论坛脚本,因此它是一个值得尝试开发脚本的基础。它实际上只是类别,主题和登录/注册系统,我试图用Smarty重写。
答案 0 :(得分:0)
问题在于您创建了一个新的智能对象,为其指定一个变量,但不使用它来显示您的模板 - 因此该对象会丢失。
我建议将Smarty对象传递给你的函数:
function getCategories(&$smarty) {
$rows = array();
if($result = $this->pdo->query("SELECT categories.cat_id, categories.cat_name, categories.cat_description FROM categories")) {
$rows = $result->fetchAll();
}
$smarty->assign('categories', $rows);
}
这样,对象引用将被传递给函数 - 您将能够分配您想要的任何变量而无需返回它。请确保您发送用于渲染模板的Smarty对象。