【问题标题】:Value from input type='file' in form returns empty string表单中输入 type='file' 的值返回空字符串
【发布时间】:2019-07-03 07:36:19
【问题描述】:

请帮我解决我的问题:在我的自定义模块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']);
}

【问题讨论】:

  • 向我们展示您的 html
  • 我没有写任何 HTML。我想将图像上传字段添加到主菜单中的菜单链接。所以我有一个自定义模块,我生成了一个字段......对不起,我是新手。 @威尔
  • 问题解决了:)。
  • 其他用户可能会遇到同样的情况,最好分享您的解决方案,而不是仅仅说“已解决”,本网站的目的是检索有价值的知识,而不是未回答的问题 - 或关闭它。
  • 好的,抱歉。我会解释的。

标签: php forms drupal


【解决方案1】:

解决办法是: 我决定将字段类型从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 会显示上传图片的路径,就像我想要的那样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2016-09-01
    • 1970-01-01
    • 2015-06-14
    • 2021-09-01
    相关资源
    最近更新 更多