Git 代码点火器+;应用程序+;带有视图自定义的应用程序更新

Git 代码点火器+;应用程序+;带有视图自定义的应用程序更新,git,codeigniter,Git,Codeigniter,我有一个应用程序,使用HMVC和codeigniter。整个应用程序都在名为MapIt-USA的git repo中。我刚刚遇到一个场景,我将此应用程序部署到客户端xyz,他们希望我自定义前端视图布局。然而,我做了修改,当我做后端控制器、库、模型补丁/更新时,我将这些更新推送到服务器上的源站并从源站下拉,我需要一种方法来避免覆盖视图中的这些更改 有什么想法吗?重载视图(实际上是任何文件)的基本想法: 将自定义视图存储在主应用程序更新不会覆盖它们的位置。为这些设置与默认设置相同的名称 首先修改模板

我有一个应用程序,使用HMVC和codeigniter。整个应用程序都在名为MapIt-USA的git repo中。我刚刚遇到一个场景,我将此应用程序部署到客户端xyz,他们希望我自定义前端视图布局。然而,我做了修改,当我做后端控制器、库、模型补丁/更新时,我将这些更新推送到服务器上的源站并从源站下拉,我需要一种方法来避免覆盖视图中的这些更改


有什么想法吗?

重载视图(实际上是任何文件)的基本想法:

  • 将自定义视图存储在主应用程序更新不会覆盖它们的位置。为这些设置与默认设置相同的名称
  • 首先修改模板加载器以检查自定义文件,如果它不存在,则使用默认文件。如果您没有加载模板的自定义解决方案,现在可以编写一个或扩展CI Loader类以适应此更改
可能有一天,您需要重载或扩展的不仅仅是视图:可能是配置文件、帮助程序、语言文件,甚至是控制器。所以,从长远来看,你可能想开始考虑如何处理这个问题。您可以模仿CI的工作方式,首先在
系统/
中查找文件,同时允许
应用程序/
文件扩展或重载。当然,定制将承担保持兼容的负担

视图的简短示例:

class MY_Template_Loader {

    // We'll assume this is in your application/ dir
    private $custom_path = 'custom_views/';

    function load($file = NULL)
    {
        // This is the default view
        $view = $file;

        // Is there a file with the same name in the custom dir?
        // If so, use that instead of the default
        if (is_file(APPPATH.$this->custom_path.$file.'.php'))
        {
            // This is a little bit of a trick
            // Use a relative path from CI's default view dir
            $view = '../'.$this->custom_path.$file;
        }
        get_instance()->load->view($view);
    }

}
控制器方法中的用法:

function my_method()
{
    $this->my_template_loader->load('my_method/index');
    // If "APPPATH/custom_views/my_method/index.php" exists it will be loaded
    // Otherwise it will try to load "views/my_method/index.php"
}

如何真正做到这一点取决于您,但这是基本的想法。

我使用phil sturgeon的CI模板库,我想知道是否有内置的功能。您最好自己构建功能,因为您的需求非常具体。这真的没什么,你在概念上需要帮助吗?