Drupal 8には、デフォルトでユーザーの写真用のuser_pictureフィールドがあります。数か月前にサイトを開始したときに、このフィールドを使用しなかったため削除しました。
今日はこのフィールドが必要なので、画像タイプのフィールドを作成しました。
MY PROBLEM:ユーザーの写真を使用するいくつかのモジュールをインストールしましたが、user_pictureがデフォルトであるため、見つかりません
User_pictureフィールドを作成すると、フィールド名がマシン名の前に自動的に追加されます。
正しいマシン名でデフォルトのフィールドを復元することは可能ですか?
前述のように構成をインポートする代わりに、プログラムでフィールドを再作成することもできます。これを行うコードをいくつか示します。
<?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でフィールドを使用できるようになるため、問題が発生するため)。
これは、標準プロファイルが保持するインストール構成を使用して処理できます。最も簡単な方法は、drupalのコンソールを使用することです。つまり、(docroot内から)次の手順を実行します。
drupal config:import:single --file=core/profiles/standard/config/install/field.storage.user.user_picture.yml
drupal config:import:single --file=core/profiles/standard/config/install/field.field.user.user.user_picture.yml
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)。
これがお役に立てば幸いです。