0

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

4

3 に答える 3

1

問題は次のとおり'type' => 'text'です。

使用する必要があります: 'type' => 'list_text'.

許可された値は、テキスト タイプには意味がありません。

于 2015-05-21T11:30:39.640 に答える
0

関数はファイルget_business_units()内にある必要があります。ファイルは通常の Drupal ブートストラップには含まれていませんMYMODULE.module.install

于 2012-04-10T00:20:30.637 に答える
0

drush features-revert MYMODULE を試しましたか?

于 2013-02-07T19:21:52.527 に答える