我正在尝试将文件迁移到包含大量自定义字段的自定义文件类型中。但是,它们似乎是以document
文件类型而不是我自定义创建的文件类型进行迁移。
我正在使用MigrateDestinationFile
作为我的目的地:
$this->destination = new MigrateDestinationFile();
我已尝试将type
像this answer这样建议映射:
$this->addFieldMapping('type')->defaultValue('custom_file_type');
此解决方案不起作用,在检查MigrateDestinationFile
的可映射字段时,没有指定type
字段,因此我认为这就是该解决方案不起作用的原因。
如果有人能指出我如何迁移到一个非常受欢迎的自定义文件类型的示例。也许我使用了错误的destination
?或者我错过了一些非常明显的事情。
迁移的另一部分与此问题无关。
答案 0 :(得分:0)
显然我有两个问题。第一个是当我们创建文件类型时,我们将其称为file
,由于某种原因,您无法将其设置为迁移目标,因为它已经在MigrateDestinationFile
构造函数中默认(请参阅下面的代码)。
From file.inc:544
/**
* Basic initialization
*
* @param array $options
* Options applied to files.
*/
public function __construct($bundle = 'file', $file_class = 'MigrateFileUri', $options = array()) {
parent::__construct('file', $bundle, $options);
$this->fileClass = $file_class;
}
第二个问题是映射到字段 bundle 本身。在重新创建具有不同名称的文件类型后,我只需要像这样设置正确的目标:
$this->destination = new MigrateDestinationFile('product_download');
执行此操作后,迁移的文件以正确的内容类型而非document
文件类型创建。