Drupal allow_values_function не вызывается при создании поля

По какой-то причине моя функция allow_values_function никогда не вызывается при отображении поля в пользовательском пакете. Код:

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.

3 ответа

Проблема в: 'type' => 'text',

Вы должны использовать: 'type' => 'list_text',

Допустимые значения не имеют смысла для текстового типа.

Ваш get_business_units() функция должна быть в MYMODULE.module файл; .install файлы не включены в обычный загрузчик Drupal.

Вы пробовали использовать функции Drush-Revert MYMODULE?

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