My custom module uses an Ajax enabled drop down to allow users to filter images. There is also a pager attached to the query. The pager works fine when all the data is displayed i.e. no filter applied but after applying a filter, clicking a pager button just gives a white screen.
Here is my code.
function view_colouring_sheets($form, $form_state){ $query = db_select('field_data_field_image','fi')->extend('PagerDefault'); $query->join('node','n','n.nid = fi.entity_id'); $query->fields('fi'); $query->fields('n',array('title')); $query->limit(20); if($form_state['input']['tid']){ $query->condition('entity_id', colouring_sheets_filtered_tid($form_state['input']['tid']),'in'); } $images = $query->execute()->fetchAll(); $output = array( '#theme'=>'image_matrix', '#type'=>'markup', '#images'=>$images, '#title'=>'Colouring Sheets', '#pager'=>theme('pager'), '#filter_form'=> drupal_render(drupal_get_form('image_filter_form')), ); return $output; } function colouring_sheets_filtered_tid($tid){ $query = db_select('field_data_field_image_category','ic'); $query->condition('field_image_category_tid',$tid); $query->fields('ic'); $result = $query->execute()->fetchAll(); $term_array = array(); foreach($result as $row){ $term_array[] = $row->entity_id; } return $term_array; } function image_filter_form($form, $form_state){ $terms = taxonomy_get_tree(18); $terms_array = array(); foreach($terms as $term){ $terms_array[$term->tid] = $term->name; } $form['tid'] = array( '#type'=>'select', '#options'=>$terms_array, '#required'=>TRUE, '#title'=>'Fitler Images', '#ajax'=>array( 'method'=>'replace', 'wrapper'=>'image_matrix', 'callback'=>'view_colouring_sheets', 'progress' => array('type' => 'throbber', 'message' => 'Images Loading'), 'effect'=>'fade', ), ); return $form; }