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.