web-dev-qa-db-ja.com

user_pictureフィールドを再作成する方法は?

Drupal 8には、デフォルトでユーザーの写真用のuser_pictureフィールドがあります。数か月前にサイトを開始したときに、このフィールドを使用しなかったため削除しました。

enter image description here

今日はこのフィールドが必要なので、画像タイプのフィールドを作成しました。

enter image description here

MY PROBLEM:ユーザーの写真を使用するいくつかのモジュールをインストールしましたが、user_pictureがデフォルトであるため、見つかりません

User_pictureフィールドを作成すると、フィールド名がマシン名の前に自動的に追加されます。

正しいマシン名でデフォルトのフィールドを復元することは可能ですか?

2
1ad9ac48

前述のように構成をインポートする代わりに、プログラムでフィールドを再作成することもできます。これを行うコードをいくつか示します。

<?php

use Drupal\field\Entity\FieldConfig;
use Drupal\field\Entity\FieldStorageConfig;


// Create the user profile field and instance.
FieldStorageConfig::create([
  'entity_type' => 'user',
  'field_name' => 'user_picture',
  'type' => 'image',
  'translatable' => '0',
])->save();
FieldConfig::create([
  'label' => 'User Picture',
  'description' => '',
  'field_name' => 'user_picture',
  'entity_type' => 'user',
  'bundle' => 'user',
  'required' => 0,
])->save();

上記のコードがdocrootに格納されているrecreateUserPicture.phpというファイルに配置されているとすると、次のDrushコマンドを実行できます。

drush scr recreateUserPicture.php

がんばって!

注:代替回答(標準プロファイルから構成をインポートすると、ビューのUIでフィールドを使用できるようになるため、問題が発生するため)。

7

これは、標準プロファイルが保持するインストール構成を使用して処理できます。最も簡単な方法は、drupalのコンソールを使用することです。つまり、(docroot内から)次の手順を実行します。

  1. drupal config:import:single --file=core/profiles/standard/config/install/field.storage.user.user_picture.yml
  2. drupal config:import:single --file=core/profiles/standard/config/install/field.field.user.user.user_picture.yml
  3. drupal update:entities

drupalコンソールを使用してターミナルで作業できない場合は、これら2つの設定を管理インターフェースからインポートできます。これはadmin/config/development/configuration/single/import URL(ホスト名に関連)。そこから、ファイルストレージ構成(core/profiles/standard/config/install/field.storage.user.user_picture.ymlのコンテンツ)を1回ずつインポートする必要があり、2番目はファイル構成(coreのコンテンツ)になります。 /profiles/standard/config/install/field.field.user.user.user_picture.yml)。

これがお役に立てば幸いです。

4