View source
<?php
namespace Drupal\file_module_test\Form;
use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
class FileModuleTestForm extends FormBase {
public function getFormId() {
return 'file_module_test_form';
}
public function buildForm(array $form, FormStateInterface $form_state, $tree = TRUE, $extended = TRUE, $multiple = FALSE, $default_fids = NULL) {
$form['#tree'] = (bool) $tree;
$form['nested']['file'] = [
'#type' => 'managed_file',
'#title' => $this
->t('Managed <em>@type</em>', [
'@type' => 'file & butter',
]),
'#upload_location' => 'public://test',
'#progress_message' => $this
->t('Please wait...'),
'#extended' => (bool) $extended,
'#size' => 13,
'#multiple' => (bool) $multiple,
];
if ($default_fids) {
$default_fids = explode(',', $default_fids);
$form['nested']['file']['#default_value'] = $extended ? [
'fids' => $default_fids,
] : $default_fids;
}
$form['textfield'] = [
'#type' => 'textfield',
'#title' => $this
->t('Type a value and ensure it stays'),
];
$form['submit'] = [
'#type' => 'submit',
'#value' => $this
->t('Save'),
];
return $form;
}
public function submitForm(array &$form, FormStateInterface $form_state) {
if ($form['#tree']) {
$uploads = $form_state
->getValue([
'nested',
'file',
]);
}
else {
$uploads = $form_state
->getValue('file');
}
if ($form['nested']['file']['#extended']) {
$uploads = $uploads['fids'];
}
$fids = [];
foreach ($uploads as $fid) {
$fids[] = $fid;
}
\Drupal::messenger()
->addStatus($this
->t('The file ids are %fids.', [
'%fids' => implode(',', $fids),
]));
}
}