【问题标题】:upload a file in a drupal 8 contributed module在 drupal 8 贡献的模块中上传文件
【发布时间】:2016-07-14 15:44:42
【问题描述】:

我正在尝试创建我的第一个 drupal 8 模块。在此模块中,我必须创建一个新表单并在此表单中为用户提供文件上传功能。这是我的表单控制器:

class Make2d extends FormBase {

  /**
   * {@inheritdoc}
   */
  public function getFormId() {
    return 'make2d_form';
  }

  /**
   * {@inheritdoc}
   */
  public function buildForm(array $form, FormStateInterface $form_state) {
    if (\Drupal::currentUser()->isAnonymous()) {
        return new RedirectResponse(\Drupal::url('user.page'));
    }

    $form['sheet_size'] = array(
      '#type' => 'radios',
      '#title' => t('Sheet Size'),
      '#options' => array(t('10 X 10(2.99$)'), t('17 X 17(4.99$)'), t('28 X 28(5.99$)')),
    );
    $form['uploaded_file'] = array(
      '#type' => 'file',
      '#title' => t('Upload your file'),
      '#required' => true
    );
    $form['actions']['#type'] = 'actions';
    $form['actions']['submit'] = array(
      '#type' => 'submit',
      '#value' => $this->t('Save to Cart'),
      '#button_type' => 'primary',
    );
    return $form;
  }

  /**
   * {@inheritdoc}
   */
  public function validateForm(array &$form, FormStateInterface $form_state) {
    echo '<pre>';
    print_r($form_state->getvalues());
    echo '</pre>';
  }

  /**
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
     print_r($form_state['values']);

  }

}

这是我进入表单页面时的结果:

image of my form

然后我从我的计算机中选择一个文件并提交表单。但是当我 print_r 我的 $form_state->getvalues() 数组时,结果是这样的:

Array
(
    [sheet_size] => 0
    [uploaded_file] => 
    [submit] => Drupal\Core\StringTranslation\TranslatableMarkup Object
...

您可以看到 [uploaded_file] 为空。并且关于上传文件的表单顶部有一个错误。表单控制器和文件上传有什么问题。 谢谢。

【问题讨论】:

    标签: drupal drupal-8


    【解决方案1】:

    终于!我找到了。我们应该使用 '#type' = 'managed_file' 以便让 drupal 管理上传的文件。在我们使用 '#type' = 'file' 的情况下,我们必须自己通过 file_save_upload() 传输文件。

    【讨论】:

      猜你喜欢
      • 2018-11-02
      • 2010-12-10
      • 1970-01-01
      • 2014-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-24
      • 2016-12-10
      相关资源
      最近更新 更多