2014-05-11 2 views
2

여러 번 시도했지만 콜백 함수 중 아무 것도 내 코드에서 작동하지 않는 것으로 보입니다. 여기 식료품 상 CRUD : 콜백 함수가 작동하지 않습니다.

내가 식료품 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; 
} 

내 코드에 어떤 문제가 있는지 찾기 위해 저를 도와주세요.

+0

안녕하세요 @manu, 귀하의 코드가 올바른 것으로 보입니다. 어떤 PHP 버전을 사용하고 있습니까? _myfunc가 show_courses와 동일한 컨트롤러에 먼저 있는지 확인하십시오. –

+0

빠른 응답 웹을위한 고맙습니다. johny :) 나는 그것을 확인했습니다. 그러나 익명의 함수 (아래처럼)를 사용할 때 문제는 해결 될 수 있습니다. $ crud-> callback_before_insert (function ($ post_array)) { $ post_array [ 'user_id'] = $ this-> session-> userdata ('user_id'); return $ post_array; }); – manu

+0

답변을 추가했습니다. 이 답변을 통해 문제가 해결된다고 생각되면 정답으로 받아 들여 다른 사람들을 도울 수 있도록하십시오. 다른 문제가있는 경우 (예 :''''$ crud-> callback_before_insert''''), stackoverflow에 다른 질문을 추가해야합니다. –

답변

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는 오류를 발생시키지 않습니다. 그렇기 때문에 익명의 함수를 사용하는 것이 항상 좋은 이유입니다. 적어도이 방법은 항상 실행된다는 것을 알고 있습니다.

+0

ur 지원에 감사드립니다. – manu

+1

익명 함수를 사용하면 callback_after_insert가 작동했습니다. 감사. 당신은 많은 시간을 절약했습니다. –

관련 문제