Drupal 7 Drupal allowed_values_函数在创建字段时不会被调用

Drupal 7 Drupal allowed_values_函数在创建字段时不会被调用,drupal-7,drupal-field-api,Drupal 7,Drupal Field Api,由于某些原因,在显示用户绑定上的字段时,我的allowed_values_函数从未被调用。代码: function get_business_units() { $options = entity_load('business_unit', FALSE, NULL, FALSE); $opt = bu_to_list_values($options); return $opt; } function MYMODULE_enable() { if (!field

由于某些原因,在显示用户绑定上的字段时,我的allowed_values_函数从未被调用。代码:

function get_business_units()
{
    $options = entity_load('business_unit', FALSE, NULL, FALSE);
    $opt = bu_to_list_values($options);
    return $opt;
}


function MYMODULE_enable()
{
    if (!field_info_field('field_user_business_unit')) {
        $field = array(
            'field_name' => 'field_user_business_unit', 
            'type' => 'text', 
            'settings' => array(
                'allowed_values' => array(),
                'allowed_values_function' => 'get_business_units',
            )
        );
        field_create_field($field);

        // Create the instance on the bundle.
        $instance = array(
            'field_name' => 'field_user_business_unit', 
            'entity_type' => 'user', 
            'label' => 'Business Unit', 
            'bundle' => 'user', 
            'required' => FALSE,
            'settings' => array(
                'user_register_form' => 1,
        ),
            'widget' => array(
                'type' => 'options_select',
        ),
        );
        field_create_instance($instance);
    }
}

该字段已创建,甚至在编辑用户信息时显示在用户的“编辑”页面上。但唯一的值是“选择”或“无”。我的方法从未被调用(我甚至放置了一个调试点)。这些都在MYMODULE.install文件中。

您的
获取业务单元()
函数需要位于
MYMODULE.module
文件中;正常的Drupal引导中不包括
.install
文件。

您尝试过吗
drush功能还原MYMODULE?

问题是:
'type'=>'text'

您必须使用:
“type”=>“list\u text”


允许的值对于文本类型来说是没有意义的。

这也是我最初的想法,但它仍然没有被调用。我将get_business_units()移到了MYMODULE.module文件中,但没有转到。已清除缓存。我可以用devel执行php代码,然后调用它。我的$field结构有问题吗?这些设置应该在实例或小部件级别定义吗?你能想到其他的吗?我还有一个月的时间来完成我的计算机科学“顶点”项目,这使得(很多)功能都停止了。