PHP MVC,视图循环处理


PHP MVC, view loop handling

我的控制器返回一个由几行和几列组成的PDO数组。在视图文件中循环数据的最佳方式是什么?(或者我应该在模型中做更多的逻辑?)

$user->getDetails();  //returns array in view

foreach($user->getDetails() as $row)  // Prehaps? But how to index without being explicit with column names?

谢谢!

视图的目的是运行与视图相关的逻辑并输出结果(即,根据需要对数据进行格式化……如果是JSON视图,则输出JSON.HTML输出HTML等),因此您做得很好。按照您认为合适的方式循环使用,但如果没有关于数据结构的更多细节,我们不能说比您已经了解的更多。

MVC中使用的最佳方式或方法是将编程逻辑保留在控制器中,在模型中执行与数据库相关的操作,并在视图中格式化布局。在您的情况下,您应该调用控制器中的$user->getDetails();,然后在视图中传递结果,然后循环输出数据,即

在控制器中,您可以使用$user->getDetails() 填充变量

$user_details=$user->getDetails();

然后在加载视图时将$user_details传递给视图,并在视图循环中将其传递给

foreach( $user_details as $row ){
   echo $row->id;
   echo $row->name;
}

如果结果是array of arrays而不是an array of objects,则可以使用以下

foreach( $user_details as $row ){
   echo $row['d'];
   echo $row['name'];
}

更新:

  1. 模型负责管理数据;它存储和检索应用程序使用的实体,通常来自数据库,并包含应用程序实现的逻辑
  2. 视图(表示)负责以特定格式显示模型提供的数据。它与一些流行的web应用程序中的模板模块有类似的用法,如wordpress、joomla
  3. 控制器处理模型层和视图层以使它们协同工作。控制器接收来自客户端的请求,调用模型以执行请求的操作,并将数据发送到视图。视图将要在web应用程序中显示给用户的数据格式化为html输出

参考:PHP和This中的模型视图控制器(MVC)。

    foreach( $user->getDetails() as $row ){
       echo $row->name;
       echo $row->id;
    }

您不需要将$user->getDetails()放在顶部,它将调用foreach中的函数。

模型层应该包含所有的业务逻辑。并且它不应该向控制器返回任何内容。相反,控制器应该只向模型层结构发送消息。

模型层的数据应按视图实例提取。根据数据的性质,它将决定应用哪些模板。

MVC中的视图应该包含所有的表示逻辑,并且(在与web相关的MVC启发的设计模式的情况下)处理多个模板。您还应该注意,视图和控制器之间存在1:1的关系。

如果视图从模型层接收的部分信息是某种数组,则有两种选择。要么使用一个模板,它可以呈现单个项并重复生成HTML/JON/text/XML片段,要么使用一种模板,它期望接收一个数组作为变量,并且已经包含一个循环。后一种方法通常是更务实的方法,但每一种方法都是特定的利弊。