Przesłałem plik obrazu przy użyciu managed_file
formularza Form API, ale po przesłaniu obrazu nie pojawia się on jako miniatura obok pola. Renderowana jest nazwa pliku obrazu z linkiem do obrazu i małą ikoną.
Jak wyświetlić miniaturę obrazu po przesłaniu (jak podgląd obrazu z podstawowego pola obrazu)?
Jak mogę wyświetlić obok niego obraz domyślny (jeśli ma wartość domyślną)?
To jest mój kod:
$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'])) {
`print drupal_render_children ($ form);` zapisze w.tpl.php
pliku? Jeśli nie, to gdzie mam napisać tę część?Zdefiniuj motyw w polu i symuluj strukturę kodu, aby wyświetlić podgląd właśnie przesłanego obrazu. Moje rozwiązanie jest następujące:
W swoim hook_theme ()
W swoim theme_abc_thumb_upload ()
źródło
image_style_url('thumbnail', $element['#file']->uri)
zamiastfile_create_url($element['#file']->uri)
- obecny kod może poważnie uszkodzić układ, jeśli użytkownik załaduje coś złego.o wymiarach sprawdź tę weryfikację file_validate_image_resolution :
źródło
Hakowanie kodu HTML przycisku usuwania nie działa dla mnie. Strona odświeża się bez usuwania obrazu. Zamiast tego skopiowałem z
theme_image_widget
wywołania zwrotnego pola obrazu rdzenia znalezionego wdocroot/modules/image/image.field.inc
.Użyj tej funkcji motywu, aby renderować element:
Definicja elementu formularza:
źródło
Dodaj kolejny element formularza, aby zawierał znaczniki podglądu obrazu. W poniższym kodzie $ v zawiera interesujące wartości formularza. Twój konkretny przypadek może wyciągnąć je z węzła, ze stanu formularza lub gdzieś indziej. Jest to obiekt pliku rzutowany na tablicę.
Pamiętaj, że ustawiłem status pliku na stały i ponownie zapisuję. Ma to na celu poprawne wyświetlenie przesłanych zdjęć. Style obrazów nie mogą być generowane dla obrazów przechowywanych tymczasowo, więc musisz je oznaczyć jako perm. W zależności od przypadku użycia i przepływu pracy może być konieczne zaadresowanie „osieroconych” obrazów.
Moja struktura formularza ($ form ['photos'] ['items'] [$ i]) dotyczy pola z wieloma wpisami. Mam szablon motywu, który je gromadzi i umieszcza w drupal_add_tabledrag . Struktura tablicy formularzy prawdopodobnie będzie się różnić.
źródło