我使用drupal 7和Entity API来开发模块。我有一个实体来记录客户信息。我希望使用image_field让客户端上传他们的标志。所以我有这样的功能:将image_field附加到drupal 7中的实体
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);
到attch领域。
当我调用此表单时,图像上传字段被纠正显示。我可以使用它来提升文件的服务。
在表单提交功能,我保存实体:
entity_save('silver_client', $client);
然而,当我按下保存按钮,实体表正确保存。字段表不是。 field_data_logo和field_revision_logo都是空的。
我相信实体API会关注检索和保存附加字段。有人能告诉我我的代码有什么问题吗?谢谢。
我喜欢自己解决这个问题。在提交功能中,功能: entity_form_submit_build_entity('silver_client',$ client,$ form,$ form_state);需要调用 。没有它,值来自form_state –
谢谢Ghommey。在我的原始代码中,我确实使用了field_attach_submit,但将其放在entity_save之后。我真的不明白这个功能的意图。现在我明白了,它实际上是将来自form_state的字段值放入实体对象中。以便这些值可以稍后保存。 –
我很高兴我可以帮助:) – jantimon