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对我有效。谢谢你节省了很多时间。