上一个答案的删除按钮对我也不起作用。页面刷新但未删除图像。相反,我theme_image_widget
从docroot/modules/image/image.field.inc
.
/**
* Implements theme_mymodule_thumb_upload theme callback.
*/
function theme_mymodule_thumb_upload($variables) {
$element = $variables['element'];
$output = '';
$output .= '<div class="image-widget form-managed-file clearfix">';
// My uploaded element didn't have a preview array item, so this didn't work
//if (isset($element['preview'])) {
// $output .= '<div class="image-preview">';
// $output .= drupal_render($element['preview']);
// $output .= '</div>';
//}
// If image is uploaded show its thumbnail to the output HTML
if ($element['fid']['#value'] != 0) {
$output .= '<div class="image-preview">';
// Even though I was uploading to public:// the $element uri was pointing to temporary://system, so the path to the preview image was a 404
//$output .= theme('image_style', array('style_name' => 'thumbnail', 'path' => file_load($element['fid']['#value'])->uri, 'getsize' => FALSE));
$output .= theme('image_style', array('style_name' => 'thumbnail', 'path' => 'public://'.$element['#file']->filename, 'getsize' => FALSE));
$output .= '</div>';
}
$output .= '<div class="image-widget-data">';
if ($element['fid']['#value'] != 0) {
$element['filename']['#markup'] .= ' <span class="file-size">(' . format_size($element['#file']->filesize) . ')</span> ';
}
// The remove button is already taken care of by rendering the rest of the form. No need to hack up some HTML!
$output .= drupal_render_children($element);
$output .= '</div>';
$output .= '</div>';
return $output;
}
使用这个主题函数来渲染元素:
/**
* Implements hook_theme().
*/
function mymodule_theme() {
return array(
'mymodule_thumb_upload' => array(
'render element' => 'element',
)
);
}
表单元素定义:
$form['image_upload'] = array(
'#type' => 'managed_file',
'#default_value' => $value,
'#title' => t('Thumbnail Image'),
'#description' => t('Upload a thumbnail'),
'#upload_location' => 'public://',
'#theme' => 'mymodule_thumb_upload',
'#progress_indicator' => 'throbber',
'#progress_message' => 'Uploading ...',
'#upload_validators' => array(
'file_validate_is_image' => array(),
'file_validate_extensions' => array('jpg jpeg gif png'),
'file_validate_image_resolution' => array('600x400','300x200'),
),
);