D6-> D8移行の一部としてノードの移行があり、ノードのイメージフィールドについて、個別のファイルの移行を行った後、ノードの移行でファイルの移行を参照して、宛先fidを作成し、それを画像フィールドに書き込みます。
field_image:
plugin: iterator
source: field_thumbnail
process:
target_id:
plugin: migration
migration: file
source: fid
私が遭遇している問題は、タイトルにリストされているエラーです。これはpresave()関数です:
public function preSave() {
parent::preSave();
$width = $this->width;
$height = $this->height;
// Determine the dimensions if necessary.
if (empty($width) || empty($height)) {
$image = \Drupal::service('image.factory')->get($this->entity->getFileUri());
if ($image->isValid()) {
$this->width = $image->getWidth();
$this->height = $image->getHeight();
}
}
}
次の行で死んでいるため、そのノードのイメージがないため、死んでいるようです。
$image = \Drupal::service('image.factory')->get($this->entity->getFileUri());
ノードのイメージがある場合は問題なく動作します。ファイルの移行で画像が見つからない場合、これをスキップしてはいけませんか?このエラーを回避するために使用できる.ymlファイルに構成オプションはありますか?
ありがとう。
UPDATE:私は skip_on_emptyプロセスプラグインのこのドキュメントページ を見つけ、そのページで提案されているように実装しました:
field_image:
plugin: iterator
source: field_thumbnail
process:
target_id:
-
plugin: migration
migration: file
source: fid
-
plugin: skip_on_empty
method: row
しかし、パイプラインではskip_on_emptyプラグインに到達する前にすでにエラーが発生しているため、同じエラーが発生します。しかし、私が物事を切り替える場合:
field_image:
plugin: iterator
source: field_thumbnail
process:
target_id:
-
plugin: skip_on_empty
method: row
-
plugin: migration
migration: file
source: fid
その後、画像がない場合はブログノード全体がスキップされます。イメージがない場合、イメージの移行をスキップする方法を教えてください。
以前の移行で同様の問題が発生しましたが、 コアの問題 が原因でエラーが発生することがあります。
パッチが送信されました 私の場合の問題を修正しました。