2

我正在将 codeigniter 用于各种公司使用的项目。

我们软件的默认版本已启动并运行并且工作正常 - 但是我们的一些客户希望他们的系统实例的视图文件略有不同。

理想情况下,我想做的是设置一个变量(例如 VIEW_SUFFIX),每当加载视图文件时,它会首先检查是否有可用的后缀版本,如果有的话。

例如,如果系统有一个名为“my_view.php”的标准视图文件,但一个客户端的 VIEW_SUFFIX 为“client_1” - 每当我调用 $this->load->view('my_view') 时,如果设置了 VIEW_SUFFIX 它会首先检查 my_view_client_1 是否存在(以及它是否使用过)或者是否不使用默认的 my_view.php。

我希望我的问题足够清楚......如果有人以前做过或者可以想到一种方法来做到这一点,我将非常感激。

编辑:理想情况下,我想要一个无需更改我调用视图文件的每个位置的解决方案。首先是因为有一些文件可能需要不同的客户端版本,也因为视图文件是从很多控制器调用的

4

2 回答 2

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.
    }
}
于 2013-06-06T09:37:21.323 回答
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);
于 2013-06-06T09:34:55.487 回答