Как добавить поле изображения в программно созданную форму?
В основном я хочу создать блок с моим модулем, на странице редактирования которого есть несколько полей содержимого и два поля загрузки изображений. При посещении узла, где визуализируется этот блок, я хочу визуализировать изображения с определенным стилем изображения , в то время как в форме редактирования было бы здорово показать изображения в виде предварительного просмотра миниатюр.
Я добавляю поле, подобное описанному здесь: https://api.drupal.org/api/drupal/developer !темы!forms_api_reference.html/7#управляемый файл но это вызывает у меня любопытство:
Новые файлы загружаются со статусом 0 и рассматриваются как временные файлы, которые удаляются через 6 часов с помощью cron. Ваш модуль отвечает за изменение статуса объектов $file на ФАЙЛ_СТАТУС_ПОСТОЯННЫЙ и сохранение нового статуса в базе данных.
Кроме того, в чем разница между managed_file
и file
, когда я хочу предоставить поле для загрузки изображения?
В настоящее время у меня есть конфигурация hook_block_configure:
$form['left']['image'] = array(
'#type' => 'managed_file',
'#title' => 'test',
);
Где я могу определить, как должно отображаться это изображение (стиль изображения)? Должен ли я устанавливать этот постоянный флаг?
Спасибо
3 answers
Вы не можете использовать поля из API полей в формах API форм напрямую, так как поля могут использоваться непосредственно в сущностях, а сущности могут использоваться непосредственно с формами.
Вместо этого вы можете использовать подход, описанный здесь, как любезно указал Клайв. В качестве альтернативы вы также можете использовать функцию ctools_field_invoke_field() модуля CTools.
Два поля "файл" и "управляемый файл" API формы похожи, с той разницей, что последнее обеспечивает виджет загрузки прогресса. Кроме того, managed_file добавит запись файла в таблицу с тем же именем. Помимо этого, требуется некоторая работа для отображения файла на странице, и это не поле изображения API поля.
Кроме того, в чем разница между managed_file и файлом, когда я хочу указать поле для загрузки изображения?
Нет никакой разницы в том, что вы делаете. управляемые файлы позволяют вам контролировать больше аспектов файла, например, использовать его в других местах, применять правила и т.д.
Где я могу определить, как должно отображаться это изображение (стиль изображения)?
Хм... не уверен, что понимаю. стили изображений обрабатываются при выводе, а не во время загрузки.
Должен ли я устанавливать этот постоянный флаг? вы делаете, но afaik, который будет установлен, когда ваша форма будет сохранена.
Поместите этот фрагмент кода в блок: $fid - это идентификатор файла.
$img = file_load($fid);
$blockcontent = theme('image_style',array('style_name' => 'YOURSTYLENAME', 'path' => $img->uri));