2015-01-13 42 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

相关问题