Search code examples
codeignitercrudgrocery-crud

Codeigniter Grocery Crud extend set_relation() function?


Is there anyone knows how to extend the set_relation() ?

Here is the idea, base on the example of Grocery Crud employee and offices tablesample table

$crud->set_relation('officeCode','offices','city');

the code output will show all city in dropdown, but I want to extent the set_relation() to filter all city by state to show in dropdown?

for example I want to show all city of Arizona state in dropdown, Does anyone done this before using grocery crud?

reference example:

Grocery Crud


Solution

  • I think you need this:

    function employees_management()
    {
        $crud = new grocery_CRUD();
    
        $crud->set_theme('datatables');
        $crud->set_table('employees');
        // add this line
        $crud->callback_edit_field('officeCode',array($this,'_call_back_offices'));
        $crud->callback_add_field('officeCode',array($this,'_call_back_offices'));
    
        $crud->display_as('officeCode','Office City');
        $crud->set_subject('Employee');
    
        $crud->set_relation('officeCode','offices','city');
    
        $output = $crud->render();
    
        $this->_example_output($output);
    }
    
    function _call_back_offices()
    {
        $this->load->model('user_model'); // your model
        $data = $this->user_model->getYou('offices','officeCode, city', "state = '".$this->session->userdata('state')."'"); // iam using session here
        $hasil ='<select name="officeCode">';
        foreach($data as $x)
        {
            $hasil .='<option value="'.$x->officeCode.'">'.$x->city.'</option>';
        }
        return $hasil.'</select>';
    }
    
    example user_model code:
    
    function getYou($tabel,$field = '*', $cond ='')
    {
        $this->db->select($field);
        $this->db->from($tabel);
        if(!empty($cond)) $this->db->where($cond);
        return $this->db->get()->result();
    }