Как добавить поле изображения в программно созданную форму?


В основном я хочу создать блок с моим модулем, на странице редактирования которого есть несколько полей содержимого и два поля загрузки изображений. При посещении узла, где визуализируется этот блок, я хочу визуализировать изображения с определенным стилем изображения , в то время как в форме редактирования было бы здорово показать изображения в виде предварительного просмотра миниатюр.

Я добавляю поле, подобное описанному здесь: 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',
    );

Где я могу определить, как должно отображаться это изображение (стиль изображения)? Должен ли я устанавливать этот постоянный флаг?

Спасибо

Author: kiamlaluno, 2014-02-12

3 answers

Вы не можете использовать поля из API полей в формах API форм напрямую, так как поля могут использоваться непосредственно в сущностях, а сущности могут использоваться непосредственно с формами.

Вместо этого вы можете использовать подход, описанный здесь, как любезно указал Клайв. В качестве альтернативы вы также можете использовать функцию ctools_field_invoke_field() модуля CTools.

Два поля "файл" и "управляемый файл" API формы похожи, с той разницей, что последнее обеспечивает виджет загрузки прогресса. Кроме того, managed_file добавит запись файла в таблицу с тем же именем. Помимо этого, требуется некоторая работа для отображения файла на странице, и это не поле изображения API поля.

 3
Author: Wtower, 2017-04-13 12:47:02

Кроме того, в чем разница между managed_file и файлом, когда я хочу указать поле для загрузки изображения?

Нет никакой разницы в том, что вы делаете. управляемые файлы позволяют вам контролировать больше аспектов файла, например, использовать его в других местах, применять правила и т.д.

Где я могу определить, как должно отображаться это изображение (стиль изображения)?

Хм... не уверен, что понимаю. стили изображений обрабатываются при выводе, а не во время загрузки.

Должен ли я устанавливать этот постоянный флаг? вы делаете, но afaik, который будет установлен, когда ваша форма будет сохранена.

 1
Author: jdu, 2014-02-12 14:41:28

Поместите этот фрагмент кода в блок: $fid - это идентификатор файла.

$img = file_load($fid);
$blockcontent = theme('image_style',array('style_name' => 'YOURSTYLENAME', 'path' => $img->uri));
 0
Author: laniol, 2014-02-12 15:06:08