【问题标题】:MVC with HTML,php and ajax call带有 HTML、php 和 ajax 调用的 MVC
【发布时间】:2015-08-14 20:50:27
【问题描述】:

我正在学习 MVC 结构。我通过从http://www.sitepoint.com/the-mvc-pattern-and-php-1/ 创建类来研究基本示例。现在我想开发一个小型应用程序,其中数组在模型中定义并显示在 HTML 页面中。任何人都可以给我一个小例子,以便我能更好地理解流程。提前谢谢。

【问题讨论】:

  • 您需要将此数组从模型传递给控制器​​查看

标签: php html model-view-controller


【解决方案1】:

正如 Wilson 所说,您需要使用控制器将数据从模型传递到模板中。但我会试着解释一下这个过程。

您需要记住,您的模型(数据库和相关函数)不知道也不关心您的视图控制器的工作是从模型中获取模板所需的内容,对其进行分类,在需要时对其进行操作,然后将其传递给模板。

这背后的想法是你的模型可以改变,或者你的视图可以改变而不影响另一个。控制器将承担压力。这也意味着您可以将您的模板用于其他事情(例如报告模板),或者您可以将您的模型方法用于其他事情。

这张图片显示了这些关系是如何运作的:

因此,在您的控制器中,您可能会有如下内容:

// use your database repository to get the data (run your query from your model code)

// ....
$databaseManager = new DBManage();

$data = $databaseManager->getSomeDataFromTheDatabase();
$processed_data = $this->doSomethingWithThisData($data);

// render the template in whatever way you do, passing in the data with it
return $this->render('index.php', array(
    'data' => $processed_data
));
// ....

模型可能包含:

// this could be anything from a full ORM entity model, or a simple class containing some methods to access data.
class DBManage {
    // ....
    public function getSomeDataFromTheDatabase() {
        $query = 'select * from cars';

        return $this->execute($query)->fetchData();
    }
    // ....
}

那么终于在你看来:

<table>
    <?php foreach($data as $row): ?>
        <tr>
            <td><?php echo $row[0] ?></td><td><?php echo $row[1] ?></td>
        </tr>
    <?php endforeach; ?>
</table>

现在,您如何进行渲染取决于您的应用程序的其余部分。如果您还没有解决方案,可能值得研究一个简单的现成框架,或者如果您愿意,可以导入一个框架组件,例如 Symfony's Awesome 模板模块。

【讨论】:

  • index.php 包含什么?
  • 视图是我的 index.php 吗?
  • 不,index.php 可能更可能是您的控制器。在没有任何其他框架的情况下。
猜你喜欢
  • 1970-01-01
  • 2019-02-13
  • 2016-04-17
  • 2023-03-19
  • 1970-01-01
  • 2018-01-30
  • 2017-09-08
  • 2016-11-12
  • 1970-01-01
相关资源
最近更新 更多