2015-12-21 47 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