Ich habe eine Bilddatei mit dem managed_file
Formular-API-Typ hochgeladen , aber nach dem Hochladen des Bildes wird es nicht als Miniaturansicht neben dem Feld angezeigt. Was gerendert wird, ist der Dateiname des Bildes mit einem Link zum Bild und einem kleinen Symbol.
Wie zeige ich die Miniaturansicht des Bildes nach dem Hochladen an (wie die Bildvorschau aus dem Kernbildfeld)?
Wie kann ich auch ein Standardbild daneben anzeigen (wenn es einen Standardwert hat)?
Das ist mein Code:
$form['logo'] = array(
'#title' => t('Logo'),
'#type' => 'managed_file',
'#required' => TRUE,
'#default_value' => variable_get('logo', ''),
'#upload_location' => 'public://',
'#upload_validators' => array(
'file_validate_extensions' => array('gif png jpg jpeg'),
'file_validate_size' => array(0.3*1024*1024),
)
if (!empty($form['#file'])) {
"drupal_render_children ($ form) drucken" in die.tpl.php
Datei schreiben ? Wenn nicht, wo soll ich dann diesen Teil schreiben?Definieren Sie das Thema im Feld und simulieren Sie die Codestruktur, um eine Vorschau des gerade hochgeladenen Bildes anzuzeigen. Meine Lösung lautet wie folgt:
In Ihrem hook_theme (),
In Ihrem theme_abc_thumb_upload (),
quelle
image_style_url('thumbnail', $element['#file']->uri)
anstelle vonfile_create_url($element['#file']->uri)
- aktueller Code kann das Layout ernsthaft beschädigen, wenn der Benutzer etwas Schlechtes hochlädt.Informationen zur Dimension Überprüfen Sie diese Validierungsdatei_validate_image_resolution :
quelle
Das Hacken des HTML-Codes für eine Schaltfläche zum Entfernen funktioniert bei mir nicht. Die Seite wird aktualisiert, ohne das Bild zu entfernen. Stattdessen habe ich den
theme_image_widget
Rückruf des Kernbildfelds in kopiertdocroot/modules/image/image.field.inc
.Verwenden Sie diese Designfunktion, um das Element zu rendern:
Formularelementdefinition:
quelle
Fügen Sie ein weiteres Formularelement hinzu, das das Markup für Ihre Bildvorschau enthält. Im folgenden Code enthält $ v die interessierenden Formularwerte. Ihr spezieller Fall kann sie von einem Knoten, aus dem Formularstatus oder an einem anderen Ort abrufen. Es ist ein Dateiobjekt, das in ein Array umgewandelt wird.
Beachten Sie, dass ich den Dateistatus auf permanent gesetzt und erneut gespeichert habe. Hiermit werden die hochgeladenen Bilder korrekt in der Vorschau angezeigt. Bildstile können nicht für Bilder im temporären Speicher generiert werden, daher müssen Sie sie als Dauerwelle kennzeichnen. Abhängig von Ihrem Anwendungsfall und Workflow müssen Sie möglicherweise "verwaiste" Bilder adressieren.
Meine Formularstruktur ($ form ['photos'] ['items'] [$ i]) ist für ein Bildfeld mit mehreren Einträgen vorgesehen. Ich habe eine Themenvorlage, die sie sammelt und in drupal_add_tabledrag einfügt . Ihre Formulararray-Struktur wird sich wahrscheinlich unterscheiden.
quelle