Verwaltete Datei: Wie kann #default_value richtig eingestellt werden?

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

Ich habe das obige Code-Snippet von hier . Es ist sehr nützlich, aber es fällt mir schwer, Einstellungen vorzunehmen #default_value.

Was ist $foo? Wo ist es eingestellt und wie kann ich es ändern? Werde ich das auf den anderen Seiten hochgeladene Bild verwenden (im selben Modul codiert)?

Jayjay D. Ruffy
quelle

Antworten:

6

Willkommen bei Drupal Answers. Sie müssen nur den fid-Integer-Wert an den Standardwert übergeben. Um besser zu verstehen, was fid ist, siehe unten stehende Beschreibung.

fid ist eine eindeutige Datei-ID, die für jede hochgeladene Datei mit dem Drupal-Dateisystem in der Datenbank gespeichert wird.

Wenn Sie also ein Standardbild festlegen möchten, sollte es über das Drupal-Dateisystem hochgeladen werden. Im Idealfall müssen Sie die FID der hochgeladenen Datei in einer Variablen mit variable_set im Submit-Handler speichern und variable_get im Standardwert ausführen, um die FID festzulegen. Das ist es !!

Hoffe es antwortet :-)

Anil Sagar
quelle
Das Problem ist, dass mein Bild von Zeit zu Zeit durch Benutzer-Upload geändert werden kann. Das heißt, ich werde andere FID haben. Ich muss die aktuelle FID erhalten, damit ich sie als default_value festlegen kann
Jayjay D. Luffy
Ja, dafür müssen Sie variable_set im Submit-Handler des Formulars verwenden, in dem Sie die FID der hochgeladenen Datei auf eine Variable setzen. Und wird das gleiche mit variable_get laden! Bitte lesen Sie meine aktualisierte Antwort :-)
Anil Sagar
0

Der Benutzer kann die Eigenschaft $ _GET verwenden, wenn Sie die Datei erneut rendern, ohne eine Übermittlungsfunktion aufzurufen. Wenn die Datei nach der Sendefunktion aufgerufen wird, verwenden Sie $ form_state ['values'] ['file'].


    '#type' => 'verwaltete_Datei',
    '#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'];
  }}

Kuriakose
quelle