Прикрепить поле изображения к сущности в друпале 7

Я использую 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 пусты.

Я считаю, что Entity API следит за извлечением и сохранением прикрепленных полей. Может кто-нибудь сказать мне, что не так с моим кодом? Спасибо.

1 ответ

Решение

Вы должны записать значения обратно в вашу сущность:

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

http://api.drupal.org/api/drupal/modules!field!field.attach.inc/function/field_attach_submit/7

И вы должны проверить значения полей:

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

http://api.drupal.org/api/drupal/modules!field!field.attach.inc/function/field_attach_validate/7

Кроме того, если вы не хотите объявлять свою сущность и поля самостоятельно, вы можете проверить EntityConstructionKit: http://drupal.org/project/eck который позволяет экспортировать структуры сущностей с Features как Views,

Другие вопросы по тегам