Drupal 8の基本モジュールを1つ作成しようとしています。ここで、いくつかのテキストフィールドと複数のファイルアップロード要素を含む1つのフォームを追加しました。「submitForm」で、データベースにテキストフィールド値を保存していますが、画像フィールドを保存する方法がわかりません。データベースにファイル名のみを保存します。
Drupal 7にあるのと同じ関数を使用しますか?
ファイルをアップロードすると、ファイルはデータベースの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'テーブルにエントリを作成します。設定する必要があります上記の永続フラグを使用して、永続的に保存する必要があるかどうかを決定します。