CakeDC Search не выполняет поиск с пустым значением

Я не уверен, правильно ли я понимаю emptyValue. Я хочу иметь возможность фильтровать пользователей по установленному языку, но также некоторые пользователи еще не установили язык, поэтому у них есть NULL. Вот код:

// Model    
    public $filterArgs = array(
        'locale' => array('type' => 'value', 'field' => 'Profile.locale', 'allowEmpty' => true),
    );

// Controller
    public $presetVars = array(
    'locale' => array('type' => 'value', 'allowEmpty' => true, 'emptyValue' => '0')
    );

В БД поле Profile.locale может иметь значение NULL, а его значение по умолчанию - NULL. Теперь мнение:

<?php echo $this->Form->select('locale', am(array('0' => __('Not set')), Configure::read('User.locales'))); ?>

Это дает мне правильный HTML:

<select name="data[User][locale]" class="input-small" id="UserLocale">
<option value=""></option>
<option value="0">Not set</option>
<option value="eng">English</option>
<option value="deu">Deutsch</option>
<option value="pol">Polski</option>
</select>

Но когда я пытаюсь выполнить поиск и выбрать "Не задано", параметр локали не отображается в URL. Также, когда я печатаю от руки ?locale=0 в URL я получаю в запросе WHERE 'Profile'.'locale' = '0' не WHERE 'Profile'.'locale' IS NULL,

Я использую CakeDC Search текущую ветку разработчика и CakePHP 2.4.6.

0 ответов

Другие вопросы по тегам