2012-07-17 15 views
11

He buscado en internet durante media hora pero no puedo encontrar uno.¿Hay un tutorial apropiado de Drupal 7 form api managed_file?

Quiero usar la API del formulario managed_file en D7 para permitir el uso de subir el archivo de imagen; más específicamente, creo que la propiedad "#upload_validators" puede hacer el truco (si es posible, para validar la extensión del archivo antes de cargarlo, o al menos, validar en la fase de validación pero no en la función de envío). Revisé image_example y file_example en los módulos de ejemplo, pero no puedo encontrar un uso adecuado de este.

Así que me pregunto si hay un tutorial adecuado en managed_file? Muchas gracias.

Actualización: Vi un ejemplo después de hacer una búsqueda en el directorio de Drupal de file.field.inc, y siguiendo el ejemplo, el código escribió así:

$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"), 
); 

Esto resolvió el problema.

+0

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

+0

@nmc: gracias por su respuesta. Si actualizo esta página antes y veo su respuesta ... Pude haber ahorrado 20 minutos .. – songyy

+0

Como se muestra correctamente en la respuesta aceptada, las extensiones de archivo se deben dar como 'array (" png gif jpg ")', de lo contrario lo hará recibir avisos y la validación no hará lo que espera. – berliner

Respuesta

8

He aquí un ejemplo del campo managed_file en uso, que incluye #upload_validators tomadas de 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), 
), 
); 
Cuestiones relacionadas