web-dev-qa-db-ja.com

ファイルに添付されたフィールドを移行する方法は?

1つのDrupal 7インストールから別のインストールにファイルを移行するために、migrate/migrate_d2dを使用してファイルの移行を書いています。

画像には、テキストフィールド「field_boilerplate」を含むカスタムフィールドが添付されています。このフィールドは、宛先サイトの画像タイプに存在します。移行を実行すると、イメージ自体が移行されてイメージエンティティが作成されますが、field_boilerplateは入力されません。

何が問題なのですか、またファイルに添付されたフィールドを移行するにはどうすればよいですか?

Mymodule.moduleで:

/**
 * Implements hook_flush_caches().
 */
function mymodule_flush_caches() {
  mymodule_migrate_register_classes();
}
/**
 * Register dynamic migration classes
 */
function mymodule_migrate_register_classes() {
  // Arguments common to all migrations
  $common_args = array(
    'source_connection' => 'mysite_legacy',
    'source_version' => 7,
    'group_name' => 'mymodule_migration',
  );
  // Other migration arguments redacted for length
  // Image migration arguments
  $image_args = array(
    'machine_name' => 'images',
    'class_name' => 'MyModuleImageMigration',
    'description' => t('Migrate images'),
    'user_migration' => 'users',
    'default_uid' => 1,
    'source_dir' => 'http://example.com/sites/default/files',
    'destination_dir' => 'public://',
    'skip_pictures' => TRUE,
  );
  Migration::registerMigration('MyModuleImageMigration', 'images', $image_args + $common_args);
}
/**
 * Implements hook_migrate_api().
 */
function mymodule_migrate_api() {
  return array('api' => 2);
}

インクルードファイル:

<?php
class MyModuleImageMigration extends DrupalFile7Migration {
  public function __construct($arguments) {
    parent::__construct($arguments);
    // Mappings
    $this->addFieldMapping('field_boilerplate', 'field_boilerplate');
  }
}
1
amacrobert

動的移行を登録するときに、バンドルタイプを指定する必要があります。

  $image_args = array(
    'machine_name' => 'images',
    'class_name' => 'MyModuleImageMigration',
    'description' => t('Migrate images'),
    'user_migration' => 'users',
    'default_uid' => 1,
    'source_dir' => 'http://example.com/sites/default/files',
    'destination_dir' => 'public://',
    'skip_pictures' => TRUE,
    'bundle' => 'image', // Need to add the bundle type
  );
  Migration::registerMigration('MyModuleImageMigration', 'images', $image_args + $common_args);
2
amacrobert