如何处理MVC网站的模板?

And*_*son 6 php model-view-controller view

我把它标记为PHP,但仅仅因为我将使用PHP代码来显示我的问题.

所以我为控制器提供了这样的代码:

switch ($page)
{
    case "home":
        require "views/home.php";
        break;
    case "search":
        require "views/search.php";
        break;
}
Run Code Online (Sandbox Code Playgroud)

显然有更多的页面,但这应该说明我的问题.这两个页面都有一个共同的页眉,导航和页脚(对于网站上的所有页面).我应该使用多个require语句吗?我的第一个猜测是:

switch ($page)
{
    case "home":
        require "templates/header.php";
        require "templates/navigation.php";
        require "views/home.php";
        require "templates/footer.php";
        break;
    case "search":
        require "templates/header.php";
        require "templates/navigation.php";
        require "views/search.php";
        require "templates/footer.php";
        break;
}
Run Code Online (Sandbox Code Playgroud)

不知怎的,我的直觉告诉我这不正确.

tva*_*son 5

控制器应该只为视图设置数据并选择要显示的视图.视图应负责页面的布局,包括共享页面.我喜欢你的第一个样本.

  • 这不能回答我的问题,我不认为智能上的两个文件都有相同的页眉/页脚/导航.特别是因为它公然违反DRY原则. (2认同)