2015-12-21 59 views
1

我创建了一个函数来运行SQL查询,输出数据并且看起来很好,问题是我现在无法做任何事情,因为我无法做出来输出到模板的工作。无法使用Smarty创建来自PHP代码的TPL函数

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); 
} 

仅返回此:

enter image description here

更换return $rows;return $smarty->assign('categories', $rows);只是呈现一个空白页。

我在模板中使用此:{$categories.cat_name}

谁能帮助我解决这个问题?

我试图用Smarty重写一个易受攻击的蹩脚论坛脚本,所以它是一个值得尝试开发一个脚本的基础。这实际上就是我想用Smarty重写的类别,主题和登录/注册系统atm。

+1

你能告诉我们你想使用类别的HTML吗? –

+0

HTML与此事无关,因为Smarty必须声明该变量才能工作......您应该使用“$ smarty-> assign('categories',$ rows);”分配$类别。变量,然后在(点)之后添加其余部分,以便Smarty从该行获取信息。 Smarty和PHP本身不一样。 PHP是唯一相关的事情.. – alex809

回答

0

问题是你创建一个新的smarty对象,给它分配一个变量,但没有用它来显示你的模板 - 所以这个对象会丢失。

我建议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); 
} 

通过这种方式,对象的引用将被传递给函数 - 你就可以到任何你想去的var分配给它没有需要返回它。只要确保您发送了用于呈现模板的Smarty对象。

+0

好吧,但我怎么会真正运行查询,并返回结果,为了甚至工作?因为我实际上没有能够做到这一点。我以前尝试过,但无法找到任何现有的代码或SQL查询如何执行和输出到一个行,而不是一个捕获的例子,最后我最终与我现有的代码不起作用... 因为如果我这样做:http://i.imgur.com/FIWlM73.png 然后我最终与http://i.imgur.com/VuEVH4j .png &如果我尝试$ sql = query然后我得到一个$ sql错误的变量,我想使用PDO反正... – alex809

+0

你使用错误的PDO - 你应该获取结果来获得一个数组。 ['PDO :: query'](http://php.net/manual/en/pdo.query.php)返回一个['PDOStatement'](http://php.net/manual/en/class.pdostatement .php)对象,例如需要使用['PDOStatement :: fetchAll'](http://php.net/manual/en/pdostatement.fetchall.php)获取。我更新了我的答案,以举例说明正确使用PDO。 – vard

+0

太棒了!我认为它最终会起作用。 &然后 http://i.imgur.com/nXI9NfQ.pngS 第51行: 'code'if($ result = $ this-> pdo-> query - >(“SELECT categories.cat_id,categories。 cat_name,categories.cat_description FROM categories“)){ – alex809