Üdv!
Eszerint kellene működnie egy szűréses lapozónak, de nem működik:
function data_form($form, &$form_state){ $list = array(); // SQL select for $list .... // filter form *************************** $form['filter'] = array( '#type' => 'fieldset', '#title' => t('Filter option') ); $form['filter']['filter_id'] = array( '#type' => 'select', '#title' => t('Filter'), '#options' => $list, '#default_value' => isset( $form_state['values']['filter_id'] )? $form_state['values']['filter_id'] : '', ); $form['filter']['filter_button'] = array( '#type' => 'submit', '#value' => t('Filter'), ); // ************************************** // headers $header = array( array('data' => ' ID', 'field' => 'id', 'sort' => 'asc', 'width' => '120'), array('data' => t('Value'), 'field' => 'value'), ); // rows $rows = array(); // SQL *** db_set_active('server'); $query = db_select('data', 'd')->extend('PagerDefault')->extend('TableSort'); $query->fields( 'd', array('id', 'value') ); // filter if it exists if ( isset($form_state['values']['filter_id']) AND !empty($form_state['values']['filter_id']) ) $query->condition('d.id', $form_state['values']['filter_id'],'='); // filter end $result = $query ->limit(50) ->orderByHeader($header) ->execute(); foreach ($result as $record) { $rows[] = array( 'id' => $record->id, 'value' => $record->value, ); } // foreach db_set_active('default'); // ****** // build table $form['title'] = array( '#theme' => 'table', '#header' => array( t('Data') ), ); $form['data_table'] = array( '#theme' => 'table', '#header' => $header, '#rows' => $rows, ); $form['data_pager'] = array( '#theme' => 'pager', ); return $form; } function data_form_submit($form, &$form_state) { $form['filter']['filter_id'] = $form_state['values']['filter_id']; $form_state['rebuild'] = TRUE; }
A Filter buttonra először megy a szűrés, lapozni is lehet, majd amikor visszafele lapozok (v. első lap), a beállított szűrés nem működik (elveszik). Minden adat szűrés nélkül jelenik meg a táblázatban.
Mit rontok el?
Drupal verzió:
Fórum:
lapozó gombok és filter
Az a baj szerintem, hogy Filter-el beállított (postolt) érték a pagerrel nem megy tovább. Mivel a pager egy get-elt paraméter.
Szóval nem csoda, hogy a linkelt példában többeknek sem működött.
Van erre korrekt megoldás?
get legyen a method, és
get legyen a method, és vegyed fel a lapozó változóit is hidden elemekkel vagy views irányában indulnék el.
Palócz István
https://palocz.hu | https://tanarurkerem.hu
kösz
köszönöm.