val*_*len 3 php drupal file-upload form-api drupal-7
这是我供用户上传公司徽标的表单字段:
$form['company_logo'] = array(
'#type' => 'managed_file',
'#title' => t('Company Logo'),
'#description' => t('Allowed extensions: gif png jpg jpeg'),
'#upload_location' => 'public://uploads/',
'#default_value' => $row['companyLogo'],
'#upload_validators' => array(
'file_validate_extensions' => array('gif png jpg jpeg'),
// Pass the maximum file size in bytes
'file_validate_size' => array(1024*1024*1024),
),
Run Code Online (Sandbox Code Playgroud)
我想做的是在他们点击“上传”后显示他们的标志。
我很惊讶这不是表单 API 中内置的一个简单选项......人们怎么能这样做呢?
声明一个主题函数
/**
* Implements mymodule_thumb_upload theme callback.
*/
function theme_mymodule_thumb_upload($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 type="submit" id="edit-' . $element['#name'] . '-remove-button" name="' . $element['#name'] . '_remove_button" value="Remove" class="form-submit ajax-processed">';
$output .= '<input type="hidden" name="' . $element['#name'] . '[fid]" value="' . $element['#file']->fid . '"></div></div>';
return $output;
}
}
Run Code Online (Sandbox Code Playgroud)
告诉 drupal 这个主题函数可以用来渲染一个元素。
/**
* Implements hook_theme().
*/
function mymodule_theme() {
return array(
'mymodule_thumb_upload' => array(
'render element' => 'element',
)
);
}
Run Code Online (Sandbox Code Playgroud)
使用'#theme' => 'mymodule_thumb_upload',进行管理的文件呼吁元素的自定义主题功能。
<?php
$form['company_logo'] = array(
'#type' => 'managed_file',
'#title' => t('Company Logo'),
'#description' => t('Allowed extensions: gif png jpg jpeg'),
'#upload_location' => 'public://uploads/',
'#default_value' => $row['companyLogo'],
'#theme' => 'mymodule_thumb_upload',
'#upload_validators' => array(
'file_validate_extensions' => array('gif png jpg jpeg'),
// Pass the maximum file size in bytes
'file_validate_size' => array(1024*1024*1024),
),
Run Code Online (Sandbox Code Playgroud)