表单中输入类型=“文件”的值返回空字符串

时间:2019-07-03 07:36:19

标签: php forms drupal

请为我解决问题:在我的自定义模块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 :(得分:0)

解决方案是: 我决定将字段类型从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就像我想要的那样显示上载图像的路径。