Php 对于网页组件,您将在MVC中执行什么操作?
我曾经把我的网页的逻辑和标记放在一个php文件中 然而,我了解了MVC。我读了一篇关于这个概念的文章,但我对这个主题仍然有点困惑: 控制器应仅处理逻辑 视图处理布局、显示和HTML 视图中不应有逻辑代码 我的问题: 有人能给我举个例子说明如何实现视图网页组件(如页眉、页脚、菜单、子菜单)? 在模板中,为了最小化逻辑,可以:Php 对于网页组件,您将在MVC中执行什么操作?,php,templates,Php,Templates,我曾经把我的网页的逻辑和标记放在一个php文件中 然而,我了解了MVC。我读了一篇关于这个概念的文章,但我对这个主题仍然有点困惑: 控制器应仅处理逻辑 视图处理布局、显示和HTML 视图中不应有逻辑代码 我的问题: 有人能给我举个例子说明如何实现视图网页组件(如页眉、页脚、菜单、子菜单)? 在模板中,为了最小化逻辑,可以: <html> <body> <div><?=$html_of_header ?></div> <div>
<html>
<body>
<div><?=$html_of_header ?></div>
<div><?=$html_of_submenu ?></div>
<div><?=$html_of_mainContent ?></div>
</body>
</html>
但是,如果我使用一个变量来保存eg头的所有代码,这对我来说是没有意义的,因为我想我需要很多字符串concat,而我只是在没有MCV的情况下回显它
或者像这样:
<html>
<body>
<div><? include('header.php') ?></div>
<div><? include('submenu.php') ?></div>
<div><? include('content.php') ?></div>
</body>
</html>
我不知道如何传递数据来告诉submenu.php&content.php我在哪个目录中。我在会议上通过了吗?看起来不太好。此外,它不利于错误处理
另一种选择:
<?
$header = new Header();
$submenu = new Submenu($cataId);
$content = new Content($pageId);
?>
<html>
<body>
<div><? $header -> render(); ?></div>
<div><? $submenu -> render(); ?></div>
<div><? $content -> render(); ?></div>
</body>
</html>
这样行吗?这是否意味着将逻辑放在我的视图中?该视图不包含业务逻辑。视图中的“无代码”或“无逻辑”与视图中的无业务逻辑之间存在差异 什么是业务逻辑?这是你的应用程序“能做的一切”。您的应用程序具有的任何功能。您的应用程序可以执行的任何“操作”。例如,这是:
- 从数据库检索数据
- 具体操作,如“注册用户”、“发送通知电子邮件”或“检索X月份的业务报告”
- 任何其他这样的核心逻辑
控制器不包含逻辑。视图不包含逻辑(仅包含表示逻辑)。模型是一个层。是的,我知道如何把东西放在模型中,并把所有的演示放在视图中。但我不知道如何实现“胶水”。例如,我有一个mainMenu的模型,它查询数据库以获得menuItem的id和标题。我有一个视图,它包含页面布局和主菜单区域。那么,您如何使它成为一个良好的实践呢?再说一次:视图可以像它需要的那样复杂。做任何你需要做的事情,只要没有问题,或者如果你把你的视图换成另一个视图,也不会有大量的代码重复。如果需要从数据库中获取视图的某些项,则视图应该可以访问相应的模型函数以获取所需的数据。不过,您不应该将其放入HTML模板中,而应该使用另一个函数/类来管理数据检索,并让HTML模板仅输出该数据。“可以按照需要的那样复杂”菜单视图可以是一组PHP文件,而不仅仅是一个用于查看的PHP和一个用于模板的PHP吗?我可能会想到一个php来处理布局,一些php处理web组件,但没有想到如何将它们粘合在一起……绝对没有。视图可以是所需的任意多个文件。通常在OOP中,视图是一个类(或一组类),它执行任何需要的操作来获取所需的数据,然后呈现一个单独的HTML模板文件。