Model view controller MVC的困境,这应该在视图中还是控制器中?

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

我是MVC新手,想知道在哪里放置某段代码的最佳实践是什么,无论是控制器还是视图(如果我不熟悉,甚至是模型)

当前应用程序从数据库检索信息,其中一列是“type”。然后根据类型,有一个switch语句准备要在视图中显示的html标记

比如:

    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标记中调用它,正如链接所示。最后一个问题,我发誓:)。如果它不只是在那一个视图中,你会把它放在哪里?只是为了确认,第一个被剪断的代码是在视图中还是在控制器中?在视图中,$数据通过控制器提供只是为了确认,第一个被剪断的代码是在视图中还是在控制器中?在视图中,$数据通过控制器提供