web-dev-qa-db-ja.com

「ファイルのアップロード」フィールドを作成するには?

コンテンツエンティティタイプがあり、[ファイルのアップロード]フィールドが必要です。 Entityクラスでフィールドを宣言しました

$fields['file'] = BaseFieldDefinition::create('file')
    ->setLabel(t('Upload a file'))
    ->setDescription(t('Choose file from your computer'));

EntityFormでは、いくつかの設定を設定しようとしています。これは、後で「#states」を使用してこれを信頼できるようにする必要があるためです。

$form['file'] = [
    '#title' => $this->t('File'),
    '#description' => $this->t('Upload a file from your computer'), 
    '#type' => 'file',
    '#default_value' => $entity->file->value,
];

現時点ではフィールドが表示されていますが、フォームの保存に問題があります。ファイルは添付されていますが、アップロードされておらず、エラーは次のように述べています。

致命的なエラー:C:\ A plus\drupalsite\core\modules\file\src\Plugin\Validation\Constraint\FileValidationConstraintValidator.php(18行目)の非オブジェクトに対するメンバー関数getValue()の呼び出し

3
badm
 $form['File'] = array(
        '#type' => 'managed_file',
        '#title' => t('Choose  File'),
        '#upload_location' => 'public://MyFilesFolder/',
        '#default_value' => $entity->get('File')->value,
        '#description' => t('upload file'),
        '#states' => array(
          'visible' => array(
            ':input[name="File_type"]' => array('value' => t('Upload Your File')),
          ),
        ),
      );
3
make-me-alive