我正在CodeIgniter中编写一个需要在多个控制器中重用的helper。由helper呈现的视图中加载的初始数据可以根据哪个控制器使用helper而变化。
I'm trying this:
$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->$控制器。关于我如何使用变量作为控制器参考的任何想法?
你不能从其他任何地方访问控制器方法,只能从控制器本身内部。因此,helper无法调用get_initial_data
方法。
你要做的是让控制器调用自己的get_initial_data
方法,并将结果作为参数传递给辅助函数。
例如(在你的控制器中):
$data = $this->get_initial_data($id);
my_helper_function($data);
尝试使用
$CI->{$controller}->get_initial_data($id);