欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

views filter 过滤器 覆写 有大用 有大大用 有大大大用

如果是暴露的过滤器  如下图

通过 form_alter  的#validate 来覆写修改 

if($_GET['q'] == 'list_dhcps' && 'views_exposed_form' == $form_id){
   $form['#validate'][] = '_list_dhcps_views_exposed_form_validation';
}
function _list_dhcps_views_exposed_form_validation($form, &$form_state) {
   //给 mac 地址 重新赋值
   $field_jses_mac_value = $form_state['values']['field_jses_mac_value'];
   $field_jses_mac_value =  str_replace(':','',str_replace('-','',$field_jses_mac_value));
   $field_jses_mac_value  = trim(preg_replace('/(\w\w)/','$1-',trim($field_jses_mac_value)),'-');
   $form_state['values']['field_jses_mac_value'] = $field_jses_mac_value;
}

image.png


如果是隐藏过滤器 通过  hook views 的  hook_pre_view 的来覆写修改,要覆写的是里面的 $filters

function  custom_one_views_pre_view(&$view, &$display_id, &$args)
{
        if($view->name=='to_do_view' &&  ($display_id=='page_2')){
 
         $filters = $view->display_handler->get_option('filters');
         $filters['field_accepter_target_id']['value']['value'] = $user->uid;
         $view->display_handler->override_option('filters', $filters);
        }
        if($view->name=='list_device' &&  ($display_id=='page' )){
            $filters = $view->display_handler->get_option('filters');
      //让有线mac地址的值 等于 无线mac地址的值 ,因为它们的或关系,这样,只要输一个mac地址,就可以了
             $field_jses_mac_wireless_value = $_GET['field_jses_mac_wireless_value'];
             $field_jses_mac_wireless_value =  str_replace(':','',str_replace('-','',$field_jses_mac_wireless_value));
             $field_jses_mac_wireless_value  = trim(preg_replace('/(\w\w)/','$1-',trim($field_jses_mac_wireless_value)),'-');
             $filters['field_jses_mac_wired_value']['value'] = $field_jses_mac_wireless_value;

           //让第二个mac地址的值 等于 第一个mac地址的值 ,因为它们的或关系,这样,只要输一个ip地址,就可以了
             $field_jses_ip_address_value = $_GET['field_jses_ip_address_value'];
             $field_jses_ip_address2_value = trim($field_jses_ip_address_value);
             $filters['field_jses_ip_addresss_value']['value'] = $field_jses_ip_address2_value;
             $view->display_handler->override_option('filters', $filters);
        }
}


普通分类: