Form API und File Field
am 10.11.2015 - 15:38 Uhr in
Hallo liebe Community,
ich habe ein Problem mit einem Formular inklusive File-Feld. Wenn ich
[code]
$form['redmine_ticket_files'] = array(
'#title' => t('Anhang'),
'#type' => 'file',
'#upload_location' => 'public://',
'#upload_validators' => array(
'file_validate_extensions' => array('gif png jpg jpeg'),
'file_validate_size' => array(0.6*1024*1024),
));
[/code]
verwende, werden die Validation-Rules(werden nach der API ja auch nicht unterstützt) nicht beachtet und in der Submit-Funktion kann ich nicht auf das Element zugreifen.
Verwende ich hingegen:
[code]
$form['redmine_ticket_files'] = array(
'#title' => t('Anhang'),
'#type' => 'file',
'#upload_location' => 'public://',
'#upload_validators' => array(
'file_validate_extensions' => array('gif png jpg jpeg'),
'file_validate_size' => array(0.6*1024*1024),
));
[/code]
kann ich mich auf die Validierungsregel verlassen, aber die Datei wird bereits im Vorfeld hochgeladen und bleiben auch im entsprechenden Ordner, auch wenn das Formular gar nicht abgeschickt wurde.
Die File-Examples haben mich auch noch nicht wirklich weiter gebracht, habt ihr eine Idee bzw wisst ihr wo ich nach schauen sollte?
mfg
Tim
- Anmelden oder Registrieren um Kommentare zu schreiben
Benutze managed fild
am 06.12.2015 - 02:45 Uhr
Überseh ich da grad was oder ist das zweimal der selbe Code?
Benutz am Besten '#type' => 'managed_file', und setz in der submit-Funktion dann
<?php
$file->status = FILE_STATUS_PERMANENT;
?>
Ein Beispiel für ein Bild Formular-Element mit managed_file:
<?php
$form['img_upload'] = array(
'#title' => t('Image'),
'#type' => 'managed_file',
'#upload_location' => 'public://',
'#default_value' => isset($item['img_upload']) ? $item['img_upload'] : 0,
'#description' => 'Sie können ein Foto im gif png jpg oder jpeg Format mit maximal 10 MB Datenvolumen hochladen.',
'#upload_validators' => array(
'file_validate_extensions' => array('gif png jpg jpeg'),
// Pass the maximum file size in bytes
'file_validate_size' => array(10 * 1024 * 1024),
),
);
?>
Viele Grüße,
Max