最小化MVC视图中的PHP逻辑

时间:2012-08-17 19:21:21

标签: php html model-view-controller

我有一些带有一些php变量的HTML代码,它描述了我搜索结果中单个条目的内容(例如图片,名称,共同朋友的数量等) - 这在我的代码中称为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文件中有一些占位符,以便内容可以插入。我不希望那里有任何逻辑混淆那些可能只有网页设计经验的人

让我知道我应该改变自己的头衔。

5 个答案:

答案 0 :(得分:4)

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

完成

在你的情况下,你应该建筑师,恕我直言,是这样的:

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

http://www.smarty.net/

http://www.smarty.net/syntax_comparison

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

答案 3 :(得分:0)

HY

您可以创建没有任何逻辑的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)”。编辑视图后,您将从Objects生成HTML。

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

希望这个帮助

答案 4 :(得分:-2)

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