I am have been struggling with this for the past day or so. I am simply trying to create a custom entity and populate/or update the image field with the fid. Whats weird is that every other form field I am passing I can get the value for but this managed_file field for uploading an image always returns NULL when I call dpm()
.
use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\file\Entity\File;
Within my form_build function, I use the following code.
// Manage file.
$form['theimage'] = array(
'#type' => 'managed_file',
'#title' => 'Managed file',
'#description' => $this->t('Manage file, #type = managed_file'),
//'#default_value' => $form_state->getValue('theimage'),
'#upload_location' => 'public://images/',
'#required' => FALSE,
);
In the submission handler, I use the following code.
// Get the fid value, upload it and save it to the managed file table.
$fid = $form_state->getValue(['theimage', 0]);
dpm($fid);
if (!empty($fid)) {
$file = File::load($fid);
$file->setPermanent();
$file->save();
}
Any thoughts, solutions, or recommendations would be greatly appreciated.
dpm($form_state->getValues())
ordpm($form_state->getValue(['theimage']))
. Then you may get how the structure of managed file is being rendered with FID.