Дружный фильтр "Пусто (NULL)" не работает - PullRequest
2 голосов
/ 17 октября 2011

У меня есть тип контента, который содержит поле cck.Одно из полей имеет тип text и не является обязательным для заполнения.Таким образом, это зависит от пользователя, хочет ли он / она заполнить это поле или нет.

Я создал представление для отображения всех записей с этим полем в качестве открытого фильтра, который является необязательным.Когда я хочу применить фильтр «пусто (NULL)» из выпадающего списка, он показывает мне записи миксов.Но я намеревался получить только те записи, в которых значение этого столбца равно NULL / EMPTY.

Как я могу настроить свое представление или применить изменения, чтобы получить желаемую запись после фильтра.

Ответы [ 2 ]

1 голос
/ 01 ноября 2011

Отвечая на свой вопрос:

Я думаю, что это ошибка в незащищенном фильтре drupal, когда вы выбираете [IS EMPTY (NULL)] из оператора. То, что делает drupal, на самом деле скрывает текстовое поле. И когда вы нажимаете кнопку «Применить», потому что это текстовое поле пустое, оно не включается в запрос where запроса

.

После некоторого поиска и анализа я нашел -

В этом файле - sites / all / modules / views / js /pendent.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;
    }
} 
0 голосов
/ 17 октября 2011

В этом поле можно установить некоторое значение по умолчанию, например 0 или что-то подобное, из серверной части (cck manage

...