0

我不确定我是否正确理解了 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')
    );

在 DB 中,字段 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'not WHERE 'Profile'.'locale' IS NULL

我正在使用 CakeDC 搜索当前开发人员分支和 CakePHP 2.4.6。

4

0 回答 0