Вы здесь

Как получить адреса загружаемых файлов в форме ноды?

0

Пытаюсь сделат модуль который проверит наличие EXIF данных в загруженных фотографиях на форме. Во время добавления или редактирования. Поле фотография может содержать несколько файлов. Каким образом можно пройтись по каждой фотографии и получить ее url адрес? Находил примеры для ноды, но не могу найти ничего подходящего для того, чтоб это сделать это на стандартной форме (например, /node/add/page и /node/%/edit)). Кто знает подскажите, пожалуйста.

Версия Drupal: 
7.x
Категория: 
Form API
Вопрос задан 15.02.2017 - 17:23

Ответы

0

Получилось сделать модуль он хорошо работа если загружать фотографии, если удалять почему-то срабатывает со второго раза, и то удаляет файл из списка файл который удален на первом шаге. Для сохранения вашего времени:

function testmodule_form_article_node_form_alter(&$form, &$form_state, $form_id) {
    $form['field_photo']['#element_validate'][] = 'my_function';
}

function my_function($element, &$form, &$form_state){

        $lang = $element['#language'];
        foreach (element_children($element[$lang]) as $key) {
                $fid = $element[$lang][$key]['#value']['fid'];
                $file = file_load($fid);
                $url = file_create_url($file->uri);
                dpm($url);
        }
}
Ответ дан 21.02.2017 - 18:02
0

Может проще в поле с картинкой добавить ключ #element_validate?
тогда валидацию можно проводить на этапе загрузки файла.

Ответ дан 16.02.2017 - 11:35

Спасибо за ответ, нет ли у вас примера как добавить #element_validate к существующему полю?

Комментарий оставлен 16.02.2017 - 21:31

Спасибо получилось сделать с element_validate

Комментарий оставлен 21.02.2017 - 18:00
0

А почему бы не воспользоватся хуком: hook_file_presave.

function mymodule_file_presave($file) {
    if($file->source === 'image_file_und_0') { // "image_file_und_0" идентификатор поля файла
      //проверка на EXIF
    }
}
Ответ дан 17.02.2017 - 18:19