Прикрепить поле изображения к сущности в друпале 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
,