私は最初のdrupal 8モジュールを作成しようとしています。このモジュールでは、新しいフォームを作成して、この形式でユーザーにファイルアップロード機能を提供する必要があります。ここに私のフォームコントローラがある:私は私のフォームのページに移動するとき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']);
}
}
これが結果です:
その後、私は自分のコンピュータからファイルを選択し、フォームを送信します。私は$ form_state->でgetValues()配列をしますprint_rときには結果がかなった。このようなものです:
Array
(
[sheet_size] => 0
[uploaded_file] =>
[submit] => Drupal\Core\StringTranslation\TranslatableMarkup Object
...
あなたは[uploaded_file]空であることがわかります。ファイルのアップロードに関するフォームの上部にエラーがあります。フォームコントローラとファイルのアップロードに何が問題なのですか?ありがとう。