Php 杂货店积垢:回调函数不工作
我已经尝试过好几次了,但似乎没有一个回调函数能与我的代码一起工作 这是我称之为“杂货店积垢”的方法Php 杂货店积垢:回调函数不工作,php,codeigniter,callback,crud,grocery-crud,Php,Codeigniter,Callback,Crud,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_cordi
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的方法。因此,如果
数组($this,'.'myfunct')
中的函数不存在,那么PHP不会抛出任何错误。这就是为什么使用匿名函数总是更好的原因。至少你知道这个方法会一直运行。Hello@manu,看来你的代码是正确的。您使用的是什么版本的PHP?请确保_myfunc与show_courses first位于同一控制器。Thanx用于快速回复网站johny:)我检查过了。但是,当我使用匿名函数(如下所示)时,问题得到了解决,尽管我不知道它的名称$crud->insert(函数($post_数组){$post_数组['user_id']=$this->session->userdata('user_id');返回$post_数组;});我补充了一个答案。如果你认为这个答案解决了你的问题,那么请接受它作为正确答案,这样你也可以帮助其他人。如果您有其他问题(例如,$crud->callback\u before\u insert
),则需要在stackoverflow中添加另一个问题。当我使用匿名函数时,callback\u before\u insert对我有效。谢谢你节省了很多时间。