web-dev-qa-db-ja.com

カスタムモジュールからファイルをアップロードする方法

Drupal 8の基本モジュールを1つ作成しようとしています。ここで、いくつかのテキストフィールドと複数のファイルアップロード要素を含む1つのフォームを追加しました。「submitForm」で、データベースにテキストフィールド値を保存していますが、画像フィールドを保存する方法がわかりません。データベースにファイル名のみを保存します。

Drupal 7にあるのと同じ関数を使用しますか?

4
parth.k

ファイルをアップロードすると、ファイルはデータベースのfile_managedテーブルに一時的に格納されます。ファイルを永続的に保存するには、永続的なステータス1を設定する必要があります。そうしないと、いくつかの後にcronによってテーブルから削除されます時間。
画像をロードしてデータベースに保存するこのサンプルコードは、理解に役立つ場合があります。

/* Fetch the array of the image file stored temporarily in database */
$image = $form_state->getValue ('image');

/* Load the object of the image file by it's fid */
$file = File::load ($image[0]);

/* Set the status flag permanent of the image file object */
$file->setPermanent();

/* Save the file in database ( "managed_file" table) */
$file->save();

'managed_file'フィールドタイプからファイルを選択すると、drupal 'file_managed'テーブルにエントリを作成します。設定する必要があります上記の永続フラグを使用して、永続的に保存する必要があるかどうかを決定します。

8