Codeigniter Grocery Crud расширяет функцию set_relation ()? - PullRequest
2 голосов
/ 12 сентября 2011

Кто-нибудь знает, как расширить set_relation()?

Вот идея, основанная на примере таблицы сотрудников и офисов Grocery Crud sample table

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

вывод кода покажет весь город в раскрывающемся списке, но я хочу расширить set_relation(), чтобы отфильтровать весь город по штатам для отображения в раскрывающемся списке?

например, я хочу показать весь город штата Аризона в раскрывающемся списке,Кто-нибудь делал это, прежде чем использовать продуктовый Crud?

ссылочный пример:

Grocery Crud

Ответы [ 4 ]

6 голосов
/ 07 декабря 2012

Я знаю, что мой ответ - это то, что датировано и, возможно, сейчас бесполезно для ОП, но я предполагаю, что есть много людей, которые могли бы заглянуть в этот пост, чтобы вдохновиться своими собственными проблемами set_relation.Я предлагаю более простое решение для этого ... (справедливости ради Идхама я не знаю, когда стал доступен 4-й параметр set_relation ().)

...
$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.')');
...

Вуаля!True grocery_CRUD потрясающе!

4 голосов
/ 20 апреля 2012
$crud->set_relation('officeCode','offices','city',array('country' => 'Arizona'));

Это прекрасно работает как для версии v.1.2 или новее

1 голос
/ 28 октября 2011

Я думаю, вам нужно это:

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();
}
1 голос
/ 17 сентября 2011

Я верю, что вы будете искать здесь -> http://www.grocerycrud.com/crud/function_name/set_model

Это позволит вам расширить функциональность продуктового CRUD так, как вы хотите. На самом деле я не рискнул создавать свои собственные пользовательские функции, но именно так вы захотите это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...