Model view controller MVC的困境,这应该在视图中还是控制器中?
我是MVC新手,想知道在哪里放置某段代码的最佳实践是什么,无论是控制器还是视图(如果我不熟悉,甚至是模型) 当前应用程序从数据库检索信息,其中一列是“type”。然后根据类型,有一个switch语句准备要在视图中显示的html标记 比如:Model view controller MVC的困境,这应该在视图中还是控制器中?,model-view-controller,codeigniter,Model View Controller,Codeigniter,我是MVC新手,想知道在哪里放置某段代码的最佳实践是什么,无论是控制器还是视图(如果我不熟悉,甚至是模型) 当前应用程序从数据库检索信息,其中一列是“type”。然后根据类型,有一个switch语句准备要在视图中显示的html标记 比如: foreach ($data as &$dataPoint) { foreach ($dataPoint as &$postItem) { switch ($postIte
foreach ($data as &$dataPoint)
{
foreach ($dataPoint as &$postItem)
{
switch ($postItem['type'])
{
case "image":
$postItem['content'] = "<img src=\.$postItem['content']."\" />";
break;
case "youtube":
$postItem['content'] = "<iframe src=\"http://www.youtube.com/embed/".$postItem['content']."?showinfo=0\" frameborder=\"0\"></iframe>";
break;
}
}
}
foreach($data as&$dataPoint)
{
foreach($datapointas和$positem)
{
开关($positem['type']))
{
案例“图像”:
$positem['content']=“”;
打破
案例“youtube”:
$positem['content']=“”;
打破
}
}
}
但我只是不知道它应该放在哪里,应该直接放在控制器中,然后再传递给视图吗?或者应该将其放置在视图文件的顶部
任何对MVC理论和设计的洞察都将不胜感激:)如果是显示逻辑,它应该进入视图。由于这似乎是显示逻辑,因此视图似乎是最佳位置
这个答案的解释有点不同:如果是显示逻辑,它应该出现在视图中。由于这似乎是显示逻辑,因此视图似乎是最佳位置
这个答案的解释有点不同:在你看来是的,就像其他人提到的那样 您确实可以创建一个视图格式的帮助文件来处理一些非通用的php函数
foreach ($data as &$dataPoint)
{
foreach ($dataPoint as &$postItem)
{
//format_helper.php
get_content_type($postItem);
}
}
格式化\u helper.php
if(!function_exists('get_content_type'){
function get_content_type(array $postItem){
switch ($postItem['type'])
{
case "image":
echo "<img src=\.$postItem['content']."\" />";
break;
case "youtube":
echo "<iframe src=\"http://www.youtube.com/embed/".$postItem['content']."?showinfo=0\" frameborder=\"0\"></iframe>";
break;
}
}
})
如果(!function_存在('get_content_type')){
函数获取内容类型(数组$postItem){
开关($positem['type']))
{
案例“图像”:
回声“;
打破
案例“youtube”:
回声“;
打破
}
}
})
在你看来是的,就像其他人提到的那样
您确实可以创建一个视图格式的帮助文件来处理一些非通用的php函数
foreach ($data as &$dataPoint)
{
foreach ($dataPoint as &$postItem)
{
//format_helper.php
get_content_type($postItem);
}
}
格式化\u helper.php
if(!function_exists('get_content_type'){
function get_content_type(array $postItem){
switch ($postItem['type'])
{
case "image":
echo "<img src=\.$postItem['content']."\" />";
break;
case "youtube":
echo "<iframe src=\"http://www.youtube.com/embed/".$postItem['content']."?showinfo=0\" frameborder=\"0\"></iframe>";
break;
}
}
})
如果(!function_存在('get_content_type')){
函数获取内容类型(数组$postItem){
开关($positem['type']))
{
案例“图像”:
回声“;
打破
案例“youtube”:
回声“;
打破
}
}
})
如果是这样的话-这是否意味着查看页面将类似于:…@bswinnerton类似的内容。这个页面有一些关于如何在codeigniter中使用视图的很好的示例:是的,我看过那个页面,但是没有一个示例包含视图中的逻辑,这就是我为什么要问的原因。@bswinnerton最后一个示例包含一个foreach循环-基本上与您所做的相同。如果这个函数只对这个特定的视图是必需的,是的,我会在视图的顶部声明它,然后在php标记中调用它,正如链接所示。最后一个问题,我发誓:)。如果不仅仅是在一个视图中,你会把它放在哪里?如果是这样的话,这是否意味着视图页面会是这样的:…@bswinnerton类似的东西。这个页面有一些关于如何在codeigniter中使用视图的很好的示例:是的,我看过那个页面,但是没有一个示例包含视图中的逻辑,这就是我为什么要问的原因。@bswinnerton最后一个示例包含一个foreach循环-基本上与您所做的相同。如果这个函数只对这个特定的视图是必需的,是的,我会在视图的顶部声明它,然后在php标记中调用它,正如链接所示。最后一个问题,我发誓:)。如果它不只是在那一个视图中,你会把它放在哪里?只是为了确认,第一个被剪断的代码是在视图中还是在控制器中?在视图中,$数据通过控制器提供只是为了确认,第一个被剪断的代码是在视图中还是在控制器中?在视图中,$数据通过控制器提供