私は drupal 7 と Entity API を使用してモジュールを開発しています。クライアント情報を記録するエンティティがあります。image_field を使用して、クライアントがロゴをアップロードできるようにしたいと考えています。だから私はこの機能を持っています:
function silver_client_enable()
{
field_cache_clear();
field_associate_fields("silver_client");
if(field_info_field('logo'))
return;
$field = array(
'field_name' => 'logo',
'cadinality' => 1,
'type' => 'image',
);
field_create_field($field);
$instance = array(
'field_name' => 'logo',
'entity_type' => 'silver_client',
'bundle' => 'silver_client',
'label' => 'Logo',
'description' => 'Logo',
'display' => array(
'default' => array('label' => 'hidden')
),
'settings' => array(
'file_directory' => '/logo',
),
'widget' => array(
'type' => 'image_image',
),
);
field_create_instance($instance);
}
エンティティの作成/編集フォームでは、次を使用します。
field_attach_form('silver_client', $client, $form, $form_state);
フィールドをアタッチします。
このフォームを呼び出したところ、画像アップロード欄が正しく表示されていました。私はそれを使用して、提供するファイルをアップロードできます。
フォーム送信機能では、エンティティを次のように保存します。
entity_save('silver_client', $client);
ただし、保存ボタンを押すと、エンティティ テーブルは正しく保存されます。フィールド テーブルではありません。field_data_logo と field_revision_logo の両方が空です。
エンティティ API は、添付フィールドの取得と保存を管理していると思います。誰かが私のコードの何が問題なのか教えてもらえますか? ありがとうございました。