我是第一次使用 MVC 并为个人开发开发库应用程序。我正在使用此处找到的 php 登录名。我是 php 和 sql 的新手,所以对任何业余编码表示歉意,我已经自学了 php。
在过去的两周里,我一直在阅读,并试图弄清楚如何完成最简单的任务。也许是我正在使用的MVC,或者只是我无法弄清楚。我发现自己将代码块从一个模型/视图/控制器复制到下一个模型/视图/控制器,以实现我想要的结果,但这并不理想,因为我想知道代码的作用,否则我不会学习。
我一直在做很多独立阅读和在线教程,但其中大多数都是针对CodeIgniter或CakePhp的,因此语法是不同的。我知道,一旦我最终掌握了语法和逻辑,那么我就不会有任何问题。
我将在下面使用一个简单的示例作为参考。希望有人能够为我阐明这一点并帮助我。
我今天一整天都在尝试选择表中的行数,并将其显示在用户配置文件页面上为"您有这个收藏夹数量:x"。
据我了解,我在模型中创建了favouriteTotal()
查询。然后我引用这是控制器并渲染视图?使用 PDO 连接到数据库。
登录.php(模型)
class LoginModel
{
public function favouriteTotal()
{
$query = $this->db->prepare("SELECT COUNT(*) FROM favourite");
$query->execute();
$count = $query->rowCount()
}
}
登录.php(控制器)
class Login extends Controller
{
function showProfile()
{
$login_model = $this->loadModel('Login');
$login_model->favouriteTotal();
$this->view->render('login/showprofile');
}
}
显示配置文件.php (查看)
<div>
Your have this number of favourites: <? NUMBER OF FAVS HERE ?>
</div>
这是关于它通常如何工作的一般性答案......如果您需要特定的答案,请告诉我们您正在使用什么框架。
许多MVC应用程序使用ViewBag
,一种"容器",它被传递到正在渲染的视图。
(更新了下面的代码,以反映使用的框架如何将数据传递到视图)
登录.php(控制器)
class Login extends Controller
{
function showProfile()
{
$login_model = $this->loadModel('Login');
$this->view->count = $login_model->favouriteTotal();
$this->view->render('login/showprofile');
}
}
显示配置文件.php (查看)
<div>
Your have this number of favourites: <?php echo $this->count; ?>
</div>
因此,在控制器中,您将$login_model->favouriteTotal()
的值分配给$this->view->count
。然后呈现视图。在该视图中,调用 $this->count
来访问以前发送的数据。