Как создать flexigrid с переданной переменной из другого контроллера в коде воспламенителя? - PullRequest
0 голосов
/ 08 сентября 2010

Моя проблема довольно глупая, но я не знаю, как это сделать. Я создаю стандартную flexigrid, используя стандартную структуру:

//ver lib

    /*
     * 0 - display name
     * 1 - width
     * 2 - sortable
     * 3 - align
     * 4 - searchable (2 -> yes and default, 1 -> yes, 0 -> no.)
     */
    $colModel['users.id'] = array('id',40,TRUE,'center',1);
    $colModel['users.first_name'] = array('first_name',80,TRUE,'center',0);
    $colModel['users.last_name'] = array('last_name',180,TRUE,'left',1);
    $colModel['users.email'] = array('email',120,TRUE,'left',0);
    $colModel['users.username'] = array('username',130, TRUE,'left',0);
    $colModel['users.activation_code'] = array('activation_code',80, FALSE, 'right',0);
    $colModel['users.activated'] = array('activated',80, FALSE, 'right',0);
    $colModel['lists'] = array('Lists',90, FALSE, 'right',0);

    /*
     * Aditional Parameters
     */
    $gridParams = array(
    'width' => 'auto',
    'height' => 400,
    'rp' => 15,
    'rpOptions' => '[10,15,20,25,40]',
    'pagestat' => 'Displaying: {from} to {to} of {total} items.',
    'blockOpacity' => 0.5,
    'title' => 'Hello',
    'showTableToggleBtn' => true
    );

    /*
     * 0 - display name
     * 1 - bclass
     * 2 - onpress
     */
    $buttons[] = array('Delete','delete','test');
    $buttons[] = array('separator');
    $buttons[] = array('Select All','add','test');
    $buttons[] = array('DeSelect All','delete','test');
    $buttons[] = array('separator');


    //Build js
    //View helpers/flexigrid_helper.php for more information about the params on this function
    $grid_js = build_grid_js('flex1',site_url("admin/users/list_users"),$colModel,'users.first_name','asc',$gridParams,$buttons);

    $data['js_grid'] = $grid_js;

    $this->load->view('admin_panel/admin_content', $data);

Теперь мой вопрос: возможно ли создать flexigrid с параметром в третьем сегменте URI? Например, я хочу отобразить список, который создал пользователь, и для этого мне нужен его идентификатор. Я легко могу сделать это на одном контроллере, но хочу передать его на другой контроллер и создать там новую форму flexigrid. Итак, в методе index () я могу иметь, например, переменную $ get_id, переданную из другого контроллера? Как это?

        $grid_js = build_grid_js('flex1',site_url("admin/admin_lists/display_show_list/".$get_id),$colModel,'name','asc',$gridParams,$buttons);

Надеюсь, я достаточно хорошо объяснил свою проблему. Может ли кто-нибудь помочь мне с этим? В основном ценится за любые подсказки!

1 Ответ

2 голосов
/ 15 сентября 2010

Это можно сделать двумя способами:

  1. Создать помощник Вместо того, чтобы использовать контроллер для построения вашей структуры сетки, вы должны создать помощника, который сделает это. См. http://codeigniter.com/user_guide/general/helpers.html

Просто оберните функцию, которую сделает помощник.

  1. Использование Ajax

Создайте функцию в контроллере следующим образом:

// в контроллере

function makeGrid() { 
  $id = $this->uri->segment(3);
  $grid_js = .....;

  echo json_encode($grid_js);
}

// в представлении (Javascript)

$.ajax({ 
   url:"/path/makeGrid" + id
   ...
   success: function(data){
      $.flexigrid( {... data .... });
   }
...