2012-04-09 10 views
0

何らかの理由で、ユーザーのバンドルにフィールドを表示するときに、私のallowed_values_functionが呼び出されないことがあります。コード:フィールドを作成するときに、Drupalの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ファイル内にあります。

答えて

0

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

+0

これも私がもともと考えていたものですが、それでも呼び出されることはありません。 get_business_units()をMYMODULE.moduleファイルに移動しましたが、移動しません。クリアされたキャッシュ。私はdevelでPHPコードを実行することができ、呼び出されます。私の$フィールド構造に何か問題がありますか?設定はインスタンスまたはウィジェットレベルで定義する必要がありますか? – Jack

+0

他に何か考えてもらえますか?私はコンピューターサイエンスの棺のプロジェクトを終えるために一ヶ月を残しましたが、これは機能の多くを停止させます。 – Jack

0

試しました drush features-revert MYMODULE?

1

問題は'type' => 'text'です。

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

許容値は、テキストタイプでは意味がありません。

関連する問題