何らかの理由で、ユーザー バンドルのフィールドを表示するときに、allowed_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 ファイルにあります。