2

有没有人知道如何扩展set_relation()

这是基于 Grocery Crud 员工和办公室表的示例的想法样品表

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

代码输出将在下拉列表中显示所有城市,但我想扩大set_relation()按州过滤所有城市以显示在下拉列表中?

例如,我想在下拉列表中显示亚利桑那州的所有城市,有人在使用杂货垃圾之前这样做了吗?

参考例子:

杂货杂货

4

4 回答 4

6

我知道我的回答有些过时,现在可能对 OP 没有用,但我猜有很多人可能会在这篇文章中寻找灵感来解决他们自己的 set_relation 问题。我对此提出了一个更简单的解决方案......(公平地说,我不知道 set_relation() 的第 4 个参数何时可用。)

...
$state = "AZ"; // or however you get the state you want to filter by
$crud->set_relation('officeCode','offices','city', 'officeCode IN (SELECT officeCode FROM offices WHERE state='.$state.')');
...

瞧!真正的grocery_CRUD 真棒!

于 2012-12-07T04:54:35.770 回答
4
$crud->set_relation('officeCode','offices','city',array('country' => 'Arizona'));

这适用于 v.1.2 或更高版本

于 2012-04-19T21:12:48.567 回答
1

我相信您要寻找的就在这里 --> http://www.grocerycrud.com/crud/function_name/set_model

这将允许您以您想要的方式扩展杂货店 CRUD 的功能。我实际上并没有冒险创建自己的自定义功能,但这就是您想要的方式。

于 2011-09-17T14:36:39.527 回答
1

我认为你需要这个:

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();
}
于 2011-10-28T05:04:29.473 回答