2015-01-13 120 views
2

我正在與MVC第一次和開發個人開發的圖書館應用程序。我正在使用php登錄found here。我是新來的PHP和SQL所以對任何業餘編碼道歉,我已經教了自己的PHP。MVC簡單選擇計數從數據庫和顯示解釋

我一直在閱讀過去的兩週,並試圖讓我的頭腦如何做最簡單的任務。也許這是我正在使用的MVC,或者只是我無法弄清楚。我發現自己將大塊代碼從一個模型/視圖/控制器複製到下一個,以實現我期望的結果,但是這並不理想,因爲我想知道代碼的功能或者我不會學習的內容。

我一直在做很多獨立閱讀和在線教程,但其中大部分都是針對CodeIgniter或CakePhp,因此語法不同。我知道,一旦我終於理解語法和邏輯,我就不會有任何問題。

我將在下面使用一個簡單的例子。希望有人能夠爲我闡明這一點,並幫助我。

我今天一整天都在嘗試選擇我的表格中的行數,並在用戶個人資料頁面上顯示爲「您有這個數量的最愛:x」

據我所知,我在我的模型中創建的查詢是favouriteTotal()。然後我引用這個控制器並呈現視圖?使用PDO連接到數據庫。

login.php中(模型)

class LoginModel 
{ 
    public function favouriteTotal() 
    { 
     $query = $this->db->prepare("SELECT COUNT(*) FROM favourite"); 
     $query->execute(); 
     $count = $query->rowCount()  
    } 
} 

login.php中(控制器)

class Login extends Controller 
{ 
    function showProfile() 
    { 
     $login_model = $this->loadModel('Login'); 
     $login_model->favouriteTotal(); 
     $this->view->render('login/showprofile'); 
    } 
} 

showprofile.php(視圖)

<div> 
    Your have this number of favourites: <? NUMBER OF FAVS HERE ?> 
</div> 
+1

'render'方法只需要'視圖',這意味着方法範圍中的任何內容都應該可用。您應該可以在視圖中執行'$ numberOfFavourites = $ login_model-> favouriteTotal();'然後'echo $ numberOfFavourites;'。 – naththedeveloper

回答

2

這是關於它經常如何工作的一般性答案......請告訴我們,如果你想要一個特定的答案,你正在使用什麼框架。

許多MVC應用程序使用一個ViewBag,一個'容器'的種類,被傳遞到正在呈現的視圖。

(更新下面的代碼,以反映所使用的框架如何將數據傳遞到視圖)

login.php中(控制器)

class Login extends Controller 
{ 
    function showProfile() 
    { 
     $login_model = $this->loadModel('Login'); 
     $this->view->count = $login_model->favouriteTotal(); 
     $this->view->render('login/showprofile'); 
    } 
} 

showprofile.php(視圖)

<div> 
    Your have this number of favourites: <?php echo $this->count; ?> 
</div> 

因此,在控制器中將值$login_model->favouriteTotal()分配給$this->view->count。然後你渲染視圖。在該圖中,您可以撥打$this->count訪問之前發送的數據。

+0

它不接受變量的第二個參數,請參閱GH上的這個文件:https://github.com/panique/php-login/blob/master/application/libs/View.php - 第二個參數是啓用頁眉和頁腳渲染。 – naththedeveloper

+0

根據數據如何傳遞到該GH項目的視圖來更新答案。 – Adimeus

+1

是的,當從控制器向視圖傳遞數據時,此方法應該相同。注意傳遞數據的一些變化,例如傳遞數組(並在視圖中循環它們)。關於它的一個好的起點是否非常有見地,我的觀點是,如果你選擇框架A或B,只要你對架構權利有基本的瞭解,這並不重要。 – Adimeus

相關問題