【问题标题】:Grocery CRUD: callback functions does not work杂货店 CRUD:回调函数不起作用
【发布时间】:2014-06-28 15:04:19
【问题描述】:

我已经尝试了几次,但似乎没有一个回调函数适用于我的代码。

这是我称之为杂货的方法

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;
}

请帮我找出我的代码有什么问题。

【问题讨论】:

  • 你好@manu,看来你的代码是正确的。您使用的是什么版本的 PHP?请先确保 _myfunc 与 show_courses 在同一个控制器中。
  • 感谢网络约翰尼的快速回复 :) 我查了一下。但是当我使用匿名函数(如下所示)时,即使我不知道原因,问题也得到了解决。 $crud->callback_before_insert(function($post_array){ $post_array['user_id'] = $this->session->userdata('user_id'); return $post_array; });
  • 我添加了一个答案。如果您认为此答案正在解决您的问题,那么请接受它作为正确答案,以便您也可以帮助其他人。如果您有其他问题(例如 $crud->callback_before_insert ),您需要在 stackoverflow 中添加另一个问题。

标签: php codeigniter callback crud grocery-crud


【解决方案1】:

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

【讨论】:

  • 当我使用匿名函数时,callback_after_insert 为我工作。谢谢。你节省了很多时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多