2017-02-28 1 views
0

많은 사용자 지정 필드가있는 사용자 지정 파일 형식으로 파일을 마이그레이션하려고합니다. 그러나 그들은 내 사용자 정의 파일 형식보다는 document 파일 형식으로 마이그레이션되는 것 같습니다.Drupal 7 - 파일을 사용자 지정 파일 형식으로 변환

나는 이런 내 대상으로 MigrateDestinationFile을 사용하고 있습니다 :

$this->addFieldMapping('type')->defaultValue('custom_file_type'); 

이 솔루션은 작동하지 않습니다 : 나는 this answer 같은 type을지도하려고했습니다

$this->destination = new MigrateDestinationFile(); 

는 다음과 같이 제안 , MigrateDestinationFile에 대해 mappable 필드를 검사 할 때 type 필드가 지정되지 않았으므로 이것이 이것이 해결책이되지 않는 이유라고 생각합니다.

일부 사용자가 맞춤 파일 유형으로 마이그레이션하는 방법에 대한 예를 들자면 감사하겠습니다. 아마도 내가 잘못 사용하고있다 destination? 또는 나는 아주 명백한 것을 놓쳤다.

마이그레이션의 다른 부분은이 질문에 대해 중요하지 않습니다.

답변

0

분명히 두 가지 문제가있었습니다. 첫 번째로 파일 유형을 만들 때 이라고 부르며 어떤 이유로 인해 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; 
} 

두 번째 문제는 필드 번들 자체에 매핑이었다. 단순히 다른 이름으로 파일 형식을 다시 생성 한 후이 같은 올바른 대상을 설정했다 :

$this->destination = new MigrateDestinationFile('product_download'); 

을 올바른 콘텐츠 형식이 아닌 document 파일 형식에서 만든이 마이그레이션 된 파일을 수행 한 후.