I'm getting an error that "An illegal choice has been detected." when I try to do a 'between' exposed filter on two date fields with relative dates. Other filter options - greater than, less than, etc. work normally, it's just switching to 'between' that breaks it.

Working view:


$view = new view;
$view->name = 'stories_all';
$view->description = '';
$view->tag = '';
$view->view_php = '';
$view->base_table = 'node';
$view->is_cacheable = FALSE;
$view->api_version = 2;
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
$handler = $view->new_display('default', 'Defaults', 'default');
$handler->override_option('fields', array(
  'title' => array(
    'label' => 'Slug',
    'link_to_node' => 1,
    'exclude' => 0,
    'id' => 'title',
    'table' => 'node',
    'field' => 'title',
    'relationship' => 'none',
  ),
  'field_description_value' => array(
    'label' => '',
    'link_to_node' => 0,
    'label_type' => 'widget',
    'format' => 'trimmed',
    'multiple' => array(
      'group' => TRUE,
      'multiple_number' => '',
      'multiple_from' => '',
      'multiple_reversed' => FALSE,
    ),
    'exclude' => 0,
    'id' => 'field_description_value',
    'table' => 'node_data_field_description',
    'field' => 'field_description_value',
    'relationship' => 'none',
  ),
  'field_ready_print_value' => array(
    'id' => 'field_ready_print_value',
    'table' => 'node_data_field_ready_print',
    'field' => 'field_ready_print_value',
  ),
  'field_ready_web_value' => array(
    'id' => 'field_ready_web_value',
    'table' => 'node_data_field_ready_web',
    'field' => 'field_ready_web_value',
  ),
  'edit_node' => array(
    'label' => 'edit',
    'text' => '',
    'exclude' => 0,
    'id' => 'edit_node',
    'table' => 'node',
    'field' => 'edit_node',
    'relationship' => 'none',
  ),
));
$handler->override_option('filters', array(
  'status' => array(
    'operator' => '=',
    'value' => 1,
    'group' => '0',
    'exposed' => FALSE,
    'expose' => array(
      'operator' => FALSE,
      'label' => '',
    ),
    'id' => 'status',
    'table' => 'node',
    'field' => 'status',
    'relationship' => 'none',
  ),
  'date_filter' => array(
    'operator' => '>=',
    'value' => array(
      'value' => NULL,
      'min' => NULL,
      'max' => NULL,
      'default_date' => 'now',
      'default_to_date' => 'now +1 month',
    ),
    'group' => '0',
    'exposed' => TRUE,
    'expose' => array(
      'use_operator' => 0,
      'operator' => 'date_filter_op',
      'identifier' => 'date_filter',
      'label' => 'Ready date',
      'optional' => 0,
      'remember' => 0,
    ),
    'date_fields' => array(
      'node_data_field_ready_print.field_ready_print_value' => 'node_data_field_ready_print.field_ready_print_value',
      'node_data_field_ready_web.field_ready_web_value' => 'node_data_field_ready_web.field_ready_web_value',
    ),
    'granularity' => 'day',
    'form_type' => 'date_select',
    'default_date' => 'now',
    'default_to_date' => 'now +1 month',
    'id' => 'date_filter',
    'table' => 'node',
    'field' => 'date_filter',
    'override' => array(
      'button' => 'Override',
    ),
    'relationship' => 'none',
  ),
));
$handler->override_option('access', array(
  'type' => 'none',
  'role' => array(),
  'perm' => '',
));
$handler->override_option('items_per_page', 50);
$handler->override_option('use_pager', '1');
$handler->override_option('style_plugin', 'table');
$handler->override_option('style_options', array(
  'grouping' => '',
  'override' => 1,
  'sticky' => 1,
  'order' => 'asc',
  'columns' => array(
    'field_ready_print_value' => 'field_ready_print_value',
    'field_ready_web_value' => 'field_ready_web_value',
    'edit_node' => 'edit_node',
    'title' => 'title',
  ),
  'info' => array(
    'field_ready_print_value' => array(
      'sortable' => 0,
      'separator' => '',
    ),
    'field_ready_web_value' => array(
      'sortable' => 0,
      'separator' => '',
    ),
    'edit_node' => array(
      'separator' => '',
    ),
    'title' => array(
      'sortable' => 0,
      'separator' => '',
    ),
  ),
  'default' => '-1',
));
$handler = $view->new_display('page', 'Page', 'page_1');
$handler->override_option('path', 'stories/all');
$handler->override_option('menu', array(
  'type' => 'tab',
  'title' => 'All stories',
  'weight' => '0',
));
$handler->override_option('tab_options', array(
  'type' => 'normal',
  'title' => 'Stories',
  'weight' => '0',
));

Non-functional view:


$view = new view;
$view->name = 'stories_all';
$view->description = '';
$view->tag = '';
$view->view_php = '';
$view->base_table = 'node';
$view->is_cacheable = FALSE;
$view->api_version = 2;
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
$handler = $view->new_display('default', 'Defaults', 'default');
$handler->override_option('fields', array(
  'title' => array(
    'label' => 'Slug',
    'link_to_node' => 1,
    'exclude' => 0,
    'id' => 'title',
    'table' => 'node',
    'field' => 'title',
    'relationship' => 'none',
  ),
  'field_description_value' => array(
    'label' => '',
    'link_to_node' => 0,
    'label_type' => 'widget',
    'format' => 'trimmed',
    'multiple' => array(
      'group' => TRUE,
      'multiple_number' => '',
      'multiple_from' => '',
      'multiple_reversed' => FALSE,
    ),
    'exclude' => 0,
    'id' => 'field_description_value',
    'table' => 'node_data_field_description',
    'field' => 'field_description_value',
    'relationship' => 'none',
  ),
  'field_ready_print_value' => array(
    'id' => 'field_ready_print_value',
    'table' => 'node_data_field_ready_print',
    'field' => 'field_ready_print_value',
  ),
  'field_ready_web_value' => array(
    'id' => 'field_ready_web_value',
    'table' => 'node_data_field_ready_web',
    'field' => 'field_ready_web_value',
  ),
  'edit_node' => array(
    'label' => 'edit',
    'text' => '',
    'exclude' => 0,
    'id' => 'edit_node',
    'table' => 'node',
    'field' => 'edit_node',
    'relationship' => 'none',
  ),
));
$handler->override_option('filters', array(
  'status' => array(
    'operator' => '=',
    'value' => 1,
    'group' => '0',
    'exposed' => FALSE,
    'expose' => array(
      'operator' => FALSE,
      'label' => '',
    ),
    'id' => 'status',
    'table' => 'node',
    'field' => 'status',
    'relationship' => 'none',
  ),
  'date_filter' => array(
    'operator' => 'between',
    'value' => array(
      'value' => NULL,
      'min' => NULL,
      'max' => NULL,
      'default_date' => 'now',
      'default_to_date' => 'now +1 month',
    ),
    'group' => '0',
    'exposed' => TRUE,
    'expose' => array(
      'use_operator' => 0,
      'operator' => 'date_filter_op',
      'identifier' => 'date_filter',
      'label' => 'Ready date',
      'optional' => 0,
      'remember' => 0,
    ),
    'date_fields' => array(
      'node_data_field_ready_print.field_ready_print_value' => 'node_data_field_ready_print.field_ready_print_value',
      'node_data_field_ready_web.field_ready_web_value' => 'node_data_field_ready_web.field_ready_web_value',
    ),
    'granularity' => 'day',
    'form_type' => 'date_select',
    'default_date' => 'now',
    'default_to_date' => 'now +1 month',
    'id' => 'date_filter',
    'table' => 'node',
    'field' => 'date_filter',
    'override' => array(
      'button' => 'Override',
    ),
    'relationship' => 'none',
  ),
));
$handler->override_option('access', array(
  'type' => 'none',
  'role' => array(),
  'perm' => '',
));
$handler->override_option('items_per_page', 50);
$handler->override_option('use_pager', '1');
$handler->override_option('style_plugin', 'table');
$handler->override_option('style_options', array(
  'grouping' => '',
  'override' => 1,
  'sticky' => 1,
  'order' => 'asc',
  'columns' => array(
    'field_ready_print_value' => 'field_ready_print_value',
    'field_ready_web_value' => 'field_ready_web_value',
    'edit_node' => 'edit_node',
    'title' => 'title',
  ),
  'info' => array(
    'field_ready_print_value' => array(
      'sortable' => 0,
      'separator' => '',
    ),
    'field_ready_web_value' => array(
      'sortable' => 0,
      'separator' => '',
    ),
    'edit_node' => array(
      'separator' => '',
    ),
    'title' => array(
      'sortable' => 0,
      'separator' => '',
    ),
  ),
  'default' => '-1',
));
$handler = $view->new_display('page', 'Page', 'page_1');
$handler->override_option('path', 'stories/all');
$handler->override_option('menu', array(
  'type' => 'tab',
  'title' => 'All stories',
  'weight' => '0',
));
$handler->override_option('tab_options', array(
  'type' => 'normal',
  'title' => 'Stories',
  'weight' => '0',
));

Diff:

74c74
<     'operator' => '>=',
---
>     'operator' => 'between',

Comments

merlinofchaos’s picture

Does this only happen on date fields? If so, please redirect this to the date.module.

merlinofchaos’s picture

Project: Views (for Drupal 7) » Date
Version: 6.x-2.0-rc1 » 6.x-2.x-dev
Component: exposed filters » Miscellaneous
karens’s picture

Status: Active » Fixed

I committed a number of fixes to the filter today and as far as I can see it is working correctly now.

Status: Fixed » Closed (fixed)

Automatically closed -- issue fixed for two weeks with no activity.