web-dev-qa-db-fra.com

Fichier géré: quelle est la bonne façon de définir #default_value?

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

J'ai l'extrait de code ci-dessus de ici . C'est très utile, mais j'ai du mal à régler #default_value.

Quel est $foo? Où est-il réglé et comment puis-je le changer? Vais-je utiliser l'image téléchargée sur les autres pages (codée dans le même module).

7
Jayjay D. Luffy

Bienvenue dans Drupal Answers. Il vous suffit de passer la valeur entière fid à la valeur par défaut. Pour mieux comprendre ce qu'est fid voir la description ci-dessous.

fid est l'identifiant de fichier unique qui est stocké dans la base de données pour chaque fichier téléchargé en utilisant Drupal File System.

Donc, si vous souhaitez définir l'image par défaut, elle doit être téléchargée via Drupal File System. Idéalement, vous devez stocker la fidélité du fichier téléchargé dans une variable en utilisant variable_set = dans le gestionnaire de soumission et faites variable_get dans la valeur par défaut pour définir fid.

J'espère que cela répond :-)

6
Anil Sagar

L'utilisateur peut utiliser la propriété $ _GET si vous restituez un fichier sans appeler de fonction de soumission. Si le fichier appelle après la fonction de soumission, utilisez $ form_state ['values'] ['file']

 
 $ form ['file'] = array (
 '#type' => 'managed_file', 
 '#upload_location' => 'private://',
 '#weight' => 5, 
 '#upload_validators' => array (
 'file_validate_extensions' => array ('gif png jpg jpeg doc docx pdf xls xlsx rtf odt tiff '), 
), 
); 
 
 if (isset ($ _ GET [' file ']))) {
 $ form ['file'] ['# default_value'] = $ _GET ['file']; 
} 
 
0
Kuriakose