我正在将codeigniter用于各种公司使用的项目。
我们软件的默认版本已启动并正常运行,但是我们的一些客户希望系统实例的视图文件略有不同。
理想情况下,我想要做的是设置一个变量(例如VIEW_SUFFIX),每当加载一个视图文件时,它会首先检查是否有可用的后缀版本(如果有的话)。
例如,如果系统有一个名为“my_view.php”的标准视图文件,但是一个客户端的VIEW_SUFFIX为“client_1” - 每当我调用$ this-> load-> view('my_view')时,如果VIEW_SUFFIX已设置,它将首先检查my_view_client_1是否存在(如果它确实使用了),或者如果不使用默认的my_view.php。
我希望我的问题足够明确......如果有人之前已经做过这件事,或者想办法做到这一点,我会非常感激。
编辑: 理想情况下,我想要一个解决方案,无需我改变我调用视图文件的每个地方。首先是因为有一些文件可能需要不同的客户端版本,也因为视图文件是从很多控制器调用的
答案 0 :(得分:1)
我有一个类似的要求,我创建了一个辅助函数。除此之外,此函数可以在加载指定的视图文件之前检查后缀。此函数可以检查后缀并在加载前检查文件是否存在。
不幸的是,文件检查逻辑会有点脆弱。作为替代方案,您可以实现一个覆盖基本MY_Loader
类的CI_Loader
类。
application/core/MY_Loader.php
中的类似内容:
class MY_Loader extends CI_Loader {
protected function _ci_load($_ci_data)
{
// Copy paste code from CI with your modifications to check prefix.
}
}
答案 1 :(得分:0)
你能不能这样做
// some method of creating $client
// probably created at login
$_SESSION['client'] = 'client_1';
$client = (isset($_SESSION['client'])) ? $_SESSION['client'] : '';
$this->load->view("your_view{$client}", $data);