drupal公开过滤器“为空(NULL)”下拉列表无法正常工作

时间:2011-10-17 09:33:05

标签: php mysql drupal drupal-views

我有一个内容类型,内容有些cck字段。其中一个字段有类型文本,它不是必填字段。因此,取决于用户是否想要填写此字段。

我创建了一个视图,用这个字段显示所有记录作为可选的外露过滤器。当我想从下拉列表中应用过滤器“is empty(NULL)”时,它会显示混合记录。但我打算只获取此列值为NULL / EMPTY的记录。

如何配置我的视图或应用更改以在过滤后获得所需的记录。

2 个答案:

答案 0 :(得分:1)

回答自己的问题:

我认为当你从运营商那里选择[IS EMPTY(NULL)]时,这是drupal暴露过滤器中的一个错误。 drupal做的实际上是隐藏文本框。当您点击“应用”按钮时,由于此文本框为空,它不包含在视图查询的 where子句

经过一番搜索和分析后发现的是 -

在此文件中 - sites / all / modules / views / js / dependent.js

如果您在我发表评论的位置进行更改

var setChangeTrigger = function(trigger_id, bind_id) {
    var changeTrigger = function() {

    .....

    if (rel_num <= len) {
        // Show if the element if criteria is matched
        $(object).children(':input').val('');  
        // EMPTYING THE TARGETED DROPDOWN ON CHANGE
        object.show(0);
        object.addClass('dependent-options');
    }
    else {
        // Otherwise hide

        $(object).children(':input').val('uw'); 
        // PUTTING ANY CHARACTER, WHEN CHANGED EVENT IS CALLED 
        // AND FROM OPERATOR YOU CHOSE IS EMPTY (NULL). 
        // IN MY CASE I JUST PUT "uw"
        object.hide(0);
    } 

你会得到我想要的结果。

您可以使用hook__views_pre_execute()

验证此
function myModule_views_pre_execute(&$view){
    switch($view->name)
    {
        case 'YOUR VIEW NAME':
            drupal_set_message($view->build_info['query']);
        break;
    }
} 

答案 1 :(得分:0)

此字段可以设置一些默认值,例如0或类似于后端的某些东西(cck manage