0

我正在使用 Drupal 7 作为表单。在表单中,我有一个 managed_file 字段。当我将主题属性添加到 managed_file 字段时,删除按钮会在删除图像时重新加载页面。上传工作正常。在添加主题属性之前,删除按钮也可以正常工作。这是我的 managed_file 字段。

$form['profile_image'] = array(
    '#title' => t('Profile Image'),
    '#type' => 'managed_file',
    '#default_value' => profile_image['user']->field_profile_image['und']['0']['fid'],
    '#upload_location' => 'public://',
    '#theme' => 'module_upload_thumb_style',
);

这是我用来设置上传图片样式的主题函数,而不是只显示图片的名称。

function theme_module_upload_thumb_style($variables) {
    $element = $variables['element'];
    if (isset($element['#file']->uri)) {
        $output = '<div id="edit-logo-ajax-wrapper"><div class="form-item form-type-managed-file form-item-logo"><span class="file">';
        $output .= '<img height="50px" src="' . image_style_url('thumbnail', $element['#file']->uri) . '" />';
        $output .= '</span><input style="margin-left:20px;" type="submit" id="edit-' . $element['#name'] . '-remove-button" name="' . $element['#name'] . '_remove_button" value="Remove" class="btn btn-primary ajax-processed">';
        $output .= '<input type="hidden" name="' . $element['#name'] . '[fid]" value="' . $element['#file']->fid . '"></div></div>';
        return $output;
    }
}

在表单域中注释主题属性时,移除按钮移除图像而不刷新页面。但是在添加主题属性时,功能保持不变,但页面重新加载

4

1 回答 1

0

在深入研究该问题后,我找到了该问题的相关解决方案。将主题功能更新为如下后,删除按钮就像一个魅力。这是更新的功能:

function theme_module_upload_thumb_style($variables) {
    $element = $variables['element'];
    $attributes = array();
    if (isset($element['#id'])) {
        $attributes['id'] = $element['#id'];
    }
    if (!empty($element['#attributes']['class'])) {
        $attributes['class'] = (array) $element['#attributes']['class'];
    }
    $attributes['class'][] = 'form-managed-file';
    $output = '';
    $output .= '<div' . drupal_attributes($attributes) . '>';
    if (isset($element['#file']->uri)) {
        $output .= '<img src="' . image_style_url('thumbnail', $element['#file']->uri) . '" />';
    }
    $output .= drupal_render_children($element);
    $output .= '</div>';
    return $output;
}
于 2015-08-06T07:11:56.970 回答