0

私はMVCを初めて使用し、コントローラーまたはビュー(または、離れている場合はモデル)の特定のコードをどこに配置するかについてのベストプラクティスは何かと考えていました。

現在、アプリケーションはデータベースから情報を取得します。1つの列は「タイプ」です。次に、タイプに基づいて、ビューに表示されるhtmlタグを準備するswitchステートメントがあります。

何かのようなもの:

    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;
            }
        }
    }

しかし、これがどこに行くべきか迷っています。ビューに渡される前に、コントローラーに直接配置する必要がありますか?または、ビューファイルの先頭に配置する必要がありますか?

MVCの理論と設計に関する洞察も大歓迎です:)

4

2 に答える 2

3

表示ロジックの場合は、ビューに表示する必要があります。それが表示ロジックのように見えるので、ビューは最適な場所のようです。

この回答は少し異なる説明をしています: https://stackoverflow.com/a/2574953/1324019

于 2012-08-17T16:52:00.097 に答える
2

うん、他の人が言ったように、あなたの見解では。

ビュー形式のヘルパー ファイルを作成して、非汎用の php 関数を処理することができます。

foreach ($data as &$dataPoint)
    {
        foreach ($dataPoint as &$postItem)
        {
            //format_helper.php
            get_content_type($postItem);
        }
    }

format_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;
            }
    }
})
于 2012-08-17T18:28:35.877 に答える