Existe-t-il un exemple de configuration d'un élément de formulaire avec un fichier de type pour le télécharger via AJAX. Je veux être identique à l'image du champ dans l'article sur le type de nœud.
tHX
Peut-être que cela sera utile (dans un module personnalisé):
function testmodule_forma($form, & $form_state) {
$form['im-container'] = array(
'#prefix' => '<div id="im-area">',
'#suffix' => '</div>',
);
$form['image_file'] = array(
'#type' => 'file',
);
$form['upload'] = array(
'#type' => 'submit',
'#value' => 'upload',
'#submit' => array('upload_image'),
'#ajax' => array(
'callback' => 'upload_image',
'wrapper' => 'im-area',
'method' => 'replace',
'effect' => 'fade',
),
);
return $form;
}
function upload_image($form, $form_state) {
$file = file_save_upload('image_file', array('file_validate_extensions' => array('png gif jpg jpeg')), "public://", FILE_EXISTS_REPLACE);
if ($file) {
$file->status = FILE_STATUS_PERMANENT;
file_save($file);
$form['im-container'] = array(
'#title' => t('Preview:'),
'#prefix' => '<div id="im-area">',
'#markup' => '<img src="sites/default/files/'.$file - > filename.
'" height="250" width="250" />',
'#suffix' => '</div>',
);
} else {
drupal_set_message('No file uploaded.');
}
return $form['im-container'];
}
Si vous utilisez D7, pourquoi écrivez-vous du code désordonné pour accomplir cette tâche?
Dans l'API de formulaire D7, nous avons type = managed_file qui télécharge le fichier en utilisant ajax.
Essayez cet exemple:
$form['image'] = array(
'#type' => 'managed_file',
'#title' => t('Upload Image'),
'#default_value' => '',
'#required' => TRUE,
'#description' => t("Upload Image description"),
);