在CodeIgniter中使用变量控制器名称

时间:2014-03-14 19:16:59

标签: php codeigniter

我正在CodeIgniter中编写一个帮助程序,我需要在多个控制器中重用它。在帮助程序呈现的视图中加载的初始数据可能会有所不同,具体取决于哪个控制器使用帮助程序。

我正在尝试这个:

    $controller = $CI->router->fetch_class();
    $init = $CI->$controller->get_initial_data($id);

但是

    Call to a member function get_initial_data() on a non-object

当我用以下内容查看变量内容时:

    print_r($controller);

我看到了正确控制器的名称。问题似乎与$ CI-> $ controller有关。关于如何将变量用作控制器参考的任何想法?

2 个答案:

答案 0 :(得分:0)

尝试使用

$CI->{$controller}->get_initial_data($id);

答案 1 :(得分:0)

您无法从控制器本身的任何位置访问控制器方法。因此,帮助者无法调用get_initial_data方法。

您要做的是让控制器调用自己的get_initial_data方法,并将结果作为参数传递给辅助函数。

例如(在您的控制器中):

$data = $this->get_initial_data($id);
my_helper_function($data);