2012-07-17 6 views
11

Ho cercato su internet per mezz'ora ma non riesco a trovarne uno.Esiste un vero e proprio tutorial per Drupal 7 form api managed_file?

Desidero utilizzare la api del modulo managed_file in D7 per consentire l'utilizzo del file di immagine di caricamento; più specificamente, penso che la proprietà "#upload_validators" possa fare il trucco (se possibile, convalidare l'estensione del file prima del caricamento, o almeno, validare nella fase di validazione ma non nella funzione di invio). Ho controllato l'image_example e il file_example nei moduli di esempio, ma non riesco a trovarne un uso corretto.

Quindi mi chiedo se c'è un tutorial adeguato su managed_file? Molte grazie.

Aggiornamento: Ho visto un esempio dopo aver fatto una ricerca su directory drupal da file.field.inc, e seguendo l'esempio, ha scritto il codice come questo:

$form['file_upload'] = array(
    '#type' => "managed_file", 
    '#title' => t("Upload"), 
    '#descripion' => t("Only Image Files are allowed."), 
    '#progress_indicator' => "bar", 
    '#upload_location' => "public://img/dish", 
    "#upload_validators" => array("file_validate_extensions" => "png gif jpg"), 
); 

Questo ha risolto il problema.

+0

Vedi http://drupal.stackexchange.com/questions/5393/how-do-i-set-allowed -extensions-for-a-managed-form-field-field – nmc

+0

@nmc: grazie per la risposta. Se aggiorno questa pagina prima e vedi la tua risposta .. Avrei potuto salvare 20 minuti .. – songyy

+0

Come mostrato correttamente nella risposta accettata, le estensioni di file devono essere date come 'array (" png gif jpg ")', altrimenti lo farai ricevere comunicazioni e la convalida non farà ciò che ti aspetti. – berliner

risposta

8

Ecco un esempio del campo managed_file in uso, che include #upload_validators come preso da https://drupal.stackexchange.com/a/5630/1103

$form['picture']['file'] = array(
    '#type' => 'managed_file', 
    '#title' => t('picture'), 
    '#description' => t('Allowed extensions: gif png jpg jpeg'), 
    '#default_value' => (isset($foo->picture->fid) ? $foo->picture->fid : ''), 
    '#upload_location' => variable_get('picture_upload_location'), 
    '#upload_validators' => array(
    'file_validate_extensions' => array('gif png jpg jpeg'), 
    // Pass the maximum file size in bytes 
    'file_validate_size' => array(MAX_FILE_SIZE*1024*1024), 
), 
);