I’m writing a block plugin that uses the form API to allow users to edit its settings, and then output them into a template.
I’m currently using
<?php /** * @file * Contains Drupalmy_pluginsPluginBlockInfoWithSideImage. */ namespace Drupalmy_pluginsPluginBlock; use DrupalCoreBlockBlockBase; use DrupalCoreFormFormStateInterface; /** * @Block( * id = "infowithsideimage", * admin_label = @Translation("Info block beside an image") * ) */ class InfoWithSideImage extends BlockBase { public function blockForm($form, FormStateInterface $form_state) { $form['image'] = array( '#type' => 'file', '#title' => $this->t('Image'), '#default_value' => $this->configuration['image_submit'], ); $form['test'] = array( '#type' => 'textfield', '#title' => $this->t('Test text field'), '#default_value' => $this->configuration['test_submit'], ); return $form; } public function blockSubmit($form, FormStateInterface $form_state) { $this->configuration['image_submit'] = $form_state->getValue('image'); $this->configuration['test_submit'] = $form_state->getValue('test'); } public function build() { return array( '#theme' => 'infowithsideimage', '#image' => $this->configuration['image_submit'], '#test' => $this->configuration['test_submit'], ); } }
The text field works fine, but whenever I try to submit with the file field I get the following error:
A fatal error occurred: Serialization of SymfonyComponentHttpFoundationFileUploadedFile is not allowed
Is there something I’m missing? Is it possible to use the form API to allow users to upload files?