Значение из типа ввода = 'file' в форме возвращает пустую строку - PullRequest
0 голосов
/ 03 июля 2019

Пожалуйста, помогите мне с моей проблемой: в моем пользовательском модуле img_menu Я хочу добавить поле загрузки изображения для редактирования формы меню.Это работает, поле отображается в форме, но когда я загружаю изображение, а затем сохраняю форму, dpm показывает, что $form_state['values']['banner_upload'] - пустая строка.Кто-нибудь знает почему?Спасибо.

function img_menu_form_alter(&$form, $form_state, $form_id) {
    if ($form_id == 'menu_edit_item') {
        $form['banner'] = array(
            '#type' => 'fieldset',
            ...
         );

        $form['banner']['banner_upload'] = array(
            '#type' => 'file',
            '#title' => t('Upload a new banner image'),
            '#maxlength' => 40,
        );

        $form['#submit'][] = 'img_menu_form_submit';
    }
}

function img_menu_form_submit($form, &$form_state) {
    dpm($form_state['values']['banner_upload']);
}

1 Ответ

0 голосов
/ 03 июля 2019

Решение: Я решил изменить тип поля с file на managed_file, и теперь оно работает.

function img_menu_form_alter(&$form, $form_state, $form_id) {
    if ($form_id == 'menu_edit_item') {
        $form['banner'] = array(
            '#type' => 'fieldset',
            ...
         );

        $form['banner']['banner_upload'] = array(
            '#type' => 'managed_file',
            '#title' => t('Upload a new banner image'),
            '#size' => 40,
            '#upload_location' => 'public://',
        );

        $form['#submit'][] = 'img_menu_form_submit';
    }
}

function img_menu_form_submit($form, &$form_state) {
    $file = file_load($form_state['values']['banner_upload']);
    $file->status = FILE_STATUS_PERMANENT;
    file_save($file);
    dpm($file->uri);
}

Таким образом, когда я делаю dpm($file->uri);, это работает хорошо, dpm показывает путь к загруженному изображению так, как я хотел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...