欢迎各位兄弟 发布技术文章
这里的技术是共享的
如果是暴露的过滤器 如下图
通过 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;
}
如果是隐藏的过滤器 通过 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);
}
}