将主题属性添加到managed_file字段,删除按钮以drupal 7格式重新加载页面

时间:2015-08-05 13:21:33

标签: ajax drupal-7 drupal-forms managed-file

我正在使用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;
    }
}

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

1 个答案:

答案 0 :(得分: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;
}