Grocery CRUD:回调函数不起作用

时间:2014-05-11 04:31:16

标签: 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_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;
}

请帮我查一下我的代码有什么问题。

1 个答案:

答案 0 :(得分:2)

如果您使用的是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不会抛出任何错误。这就是为什么使用匿名函数总是更好的原因。至少你知道这个方法总会运行。