Git 代码点火器+;应用程序+;带有视图自定义的应用程序更新
我有一个应用程序,使用HMVC和codeigniter。整个应用程序都在名为MapIt-USA的git repo中。我刚刚遇到一个场景,我将此应用程序部署到客户端xyz,他们希望我自定义前端视图布局。然而,我做了修改,当我做后端控制器、库、模型补丁/更新时,我将这些更新推送到服务器上的源站并从源站下拉,我需要一种方法来避免覆盖视图中的这些更改Git 代码点火器+;应用程序+;带有视图自定义的应用程序更新,git,codeigniter,Git,Codeigniter,我有一个应用程序,使用HMVC和codeigniter。整个应用程序都在名为MapIt-USA的git repo中。我刚刚遇到一个场景,我将此应用程序部署到客户端xyz,他们希望我自定义前端视图布局。然而,我做了修改,当我做后端控制器、库、模型补丁/更新时,我将这些更新推送到服务器上的源站并从源站下拉,我需要一种方法来避免覆盖视图中的这些更改 有什么想法吗?重载视图(实际上是任何文件)的基本想法: 将自定义视图存储在主应用程序更新不会覆盖它们的位置。为这些设置与默认设置相同的名称 首先修改模板
有什么想法吗?重载视图(实际上是任何文件)的基本想法:
- 将自定义视图存储在主应用程序更新不会覆盖它们的位置。为这些设置与默认设置相同的名称
- 首先修改模板加载器以检查自定义文件,如果它不存在,则使用默认文件。如果您没有加载模板的自定义解决方案,现在可以编写一个或扩展CI Loader类以适应此更改
系统/
中查找文件,同时允许应用程序/
文件扩展或重载。当然,定制将承担保持兼容的负担
视图的简短示例:
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模板库,我想知道是否有内置的功能。您最好自己构建功能,因为您的需求非常具体。这真的没什么,你在概念上需要帮助吗?