我已经尝试了几次,但似乎没有一个回调函数与我的代码一起工作。
这是我调用的方法grocery crud
public function show_courses()
{
$crud = new grocery_CRUD();
$crud->set_table('course');
$crud->set_theme('datatables');
$crud->fields('course_id','course_name','course_cordinator');
$crud->callback_after_insert(array($this, '_myfunc'));
$output = $crud->render();
$this->output($output);
}
这里是回调函数:
function _myfunc($post_array,$primary_key)
{
$q = array(
"notice" => $primary_key
);
$this->db->insert('notice', $q);
return true;
}
请帮我找出我的代码有什么问题
如果您使用的是PHP版本>= 5.3,那么使用匿名函数要好得多。它是更好的,因为它总是工作,你不需要搜索找到函数,它是更可读的,你不需要使用只是一个假的名字来调用它(例如_myfunc)。所以在你的例子中,你可以输入:
public function show_courses()
{
$crud = new grocery_CRUD();
$crud->set_table('course');
$crud->set_theme('datatables');
$crud->fields('course_id','course_name','course_cordinator');
$crud->callback_after_insert(function ($post_array,$primary_key) {
$this->db->insert('notice', array(
"notice" => $primary_key
));
return true;
});
$output = $crud->render();
$this->output($output);
}
对于引用,所有回调都使用PHP的方法:call_user_func。如果array($this, '_myfunct')
处的函数不存在,PHP不会抛出任何错误。这就是为什么使用匿名函数总是更好的原因。