1

我有一些 html 代码,其中包含一些 php 变量,它描述了我的搜索结果中单个条目的内容(例如图片、姓名、共同朋友的数量等)——在下面的代码中这被称为 search_results_v.php。我有一个数组,其中包含来自数据库的多条记录,并且对于每一条记录,我都会创建一个搜索结果条目。我构建程序的方式是 MVC,所以 html 代码是视图,我有一个 php 控制器。

但是,我有一个网站模板,并希望在此模板中包含我的搜索结果。这可以通过在此网页的适当部分调用我的控制器轻松解决,但我想让我的应用程序让控制器控制一切!在我刚才提到的情况下,视图正在调用控制器,但我想要一个像下面这样的设置,我只是在我的控制器中“包含”网页。

如何在网页中呈现我的搜索结果,同时最大限度地减少其中的 php 逻辑量?我正在考虑这样做的一种方法是将所有搜索结果的所有 html 代码存储在一个 php 字符串变量中,然后在我的网页中引用这个变量。如何将 html 代码存储在该变量中?

// Generates my search result box - Fill in the profile picture, the name and the number of mutual friends

    foreach ($resultsInfo as $entry) {
        $uid      = $entry['uid'];
        $pic_link = $entry['pic_square'];
        $name     = $entry['name'];
        $mfCount  = $entry['mutual_friend_count'];
        include('searchresults_v.php');
    }

编辑:好的,也许我想要的并不是一个 MVC。我试图尽可能多地将实际的后端编码从界面中分离出来,以便更熟练的人可以进来设计界面。我基本上想生成所有动态数据,并在我的 html 文件中添加一些占位符,以便内容可以直接插入。我不希望其中有任何逻辑来混淆可能只有网页设计经验的人.

让我知道我应该将标题更改为什么。

4

5 回答 5

4

在 MVC 中,视图总是可以包含循环和条件语句。基本思想是不在视图中实现查询/业务逻辑,这应该由模型完成

在你的情况下,你应该架构的东西,恕我直言,是这样的:

  1. 控制器调用一个模型,该模型生成所有必需的信息并将其格式化为数组、json 字符串或类对象,然后将其传递回控制器。

  2. 控制器将这些数据连接到视图中。视图循环遍历 array/json/object 并以页面需要显示的任何格式显示内容

于 2012-08-17T19:31:33.570 回答
0

如果您想在没有 CodeIgniter、CakePHP、Symfony 等框架的情况下继续前进,您可以查看 Smarty。它非常易于使用,并使模板非常易读。你可以最小化逻辑,但如果你需要它,它会给你足够的空间来放置逻辑。

http://www.smarty.net/

http://www.smarty.net/syntax_comparison

使用 smarty,您可以将生成模板的文件视为您的控制器/视图。执行所有逻辑,收集所有数据等,然后将其传递给 smarty 模板。

于 2012-08-17T19:47:21.027 回答
0

您可以在模板中包含您的视图吗?您可以将视图的文件名传递给模板,并将其包含在模板中间。

于 2012-08-17T19:28:36.123 回答
0

您可以创建一个没有任何逻辑的 HTML 页面。对于包含用户的表,您只创建用户的一个示例行。请参见下面的示例:

<table>
     <tr>
        <td>Firstname</td>
        <td>Lastname</td>
        <td>Age</td>
     </tr>
     <tr class='user'>
        <td class='firstname'></td>
        <td class='lastname'><td>
        <td class='age'><td>
     </tr>
</table>

之后,您使用 PHP(Lib ex. Simple HTML Dom Parser)将 HTML 文件解析为对象。

此时,您可以使用 PHP 生成视图,例如克隆、删除、重命名、填充视图中的元素,并选择 jQuery 执行的“find(.firstname)”等元素。编辑视图后,您从对象生成 HTML。

我更喜欢这种方法,因为 Webdesigner 只需要使用 HTML 和 CSS 创建视图,并且不应该学习模板是如何工作的(例如 PHPTal)

希望这有帮助

于 2012-11-14T08:50:45.040 回答
-2

我会使用 jquery(或任何其他 Js 框架)以 JSON 格式获取我的数据并添加 php 无法提供的所有客户端副作用

于 2012-08-17T19:52:48.867 回答