将图像_字段附加到drupal 7中的实体

将图像_字段附加到drupal 7中的实体,drupal,drupal-fields,imagefield,drupal-entities,Drupal,Drupal Fields,Imagefield,Drupal Entities,我使用Drupal7和实体API来开发一个模块。我有一个实体来记录客户信息。我希望使用图像_字段,让客户上传他们的标志。所以我有这个函数: function silver_client_enable() { field_cache_clear(); field_associate_fields("silver_client"); if(field_info_field('logo')) return; $field = array( 'field_na

我使用Drupal7和实体API来开发一个模块。我有一个实体来记录客户信息。我希望使用图像_字段,让客户上传他们的标志。所以我有这个函数:

    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);
但是,在按下保存按钮后,实体表被正确保存。字段表不可用。字段\数据\徽标和字段\修订\徽标均为空


我相信实体API负责检索和保存附加字段。有人能告诉我我的代码有什么问题吗?多谢各位

您必须将值写回您的实体:

field_attach_submit('silver_client', $client, $form, $form_state);
entity_save('silver_client', $client);

您应该验证字段值:

field_attach_validate('silver_client', $client, $form, $form_state);


此外,如果您不想自己声明您的实体和字段,您可以签出
EntityConstructionKit
:它允许导出具有
功能的实体结构,就像
视图

我想自己解决这个问题。在submit函数中,函数:entity\u form\u submit\u build\u entity('silver\u client',$client,$form,$form\u state);需要打电话。如果没有它,这些值来自form_Stateghommey。在我的原始代码中,我确实使用了字段\u attach\u submit,但将其放在实体\u save之后。我真的不明白这个函数的意图。现在我明白了,它实际上把form_state中的字段值放入实体对象中。以便以后可以保存这些值。