2017-04-18 35 views
0

我想从自定义表格迁移数据到书籍内容类型,但是我不知道如何实现这一点。 这是我的配置\安装\ migrate.migration.book_content.yml文件:Drupal 8 migrate插件 - 需要说明

id: book_content 
label: Book content 
migration_group: example 
source: 
    plugin: book_content 
    target: db_migration 
destination: 
    plugin: entity:node 
process: 
    type: 
    plugin: default_value 
    default_value: article 
    title: title 
    uid: 
    plugin: default_value 
    default_value: 1 
    sticky: 
    plugin: default_value 
    default_value: 0 
    status: 
    plugin: default_value 
    default_value: 1 
    'body/value': content 
    'body/summary': excerpt 
    'body/format': 
    plugin: default_value 
    default_value: full_html 
    # Use of the migration process plugin. 
    # That will use the id map of the specified migration 
    # to retrieve the corresponding id ('source' parameter) in the destination database. 
    field_description: 
    plugin: migration 
    source: body 

的src \插件\迁移\源\ BookContent.php

<?php 
/** 
* @file 
* Contains \Drupal\docapi_migrate\Plugin\migrate\source\BookContent. 
*/ 
namespace Drupal\example_migrate\Plugin\migrate\source; 
use Drupal\migrate\Plugin\migrate\source\SqlBase; 
use Drupal\migrate\Row; 
/** 
* Drupal 8 node from database. 
* 
* @MigrateSource(
* id = "book_content" 
*) 
*/ 
class BookContent extends SqlBase { 
    /** 
    * {@inheritdoc} 
    */ 
    public function query() { 
    $query = $this->select('docapi_migrate', 'dm') 
        ->fields('dm', array('url', 'depth', 'body', 'meta')); 
    return $query; 
    } 
    /** 
    * {@inheritdoc} 
    */ 
    public function fields() { 
    $fields = array(
     'url' => $this->t('Content url'), 
     'depth' => $this->t('Depth of the content'), 
     'body' => $this->t('Full text of the content'), 
     'meta' => $this->t('yaml data'), 
    ); 
    return $fields; 
    } 

然而,当我这样做:

drush migrate-import book_content 

我得到:

The drush command 'migrate-import book_content' could not be found. 

我不明白这是如何在BookContent.php工作中的功能。 应该有tags_field是分类引用,但我不知道,我应该在哪里处理元,所以例如我得到一个标签列表。 当我有标签时,我应该如何组合它,以便迁移能够正常工作。 我正在通过谷歌搜索信息,但没有任何意义。我如何理解这一点?

回答

0

您的命名空间设置为example_migrate。它需要设置为你的模块的名称,所以除非模块被称为“example_migrate”,否则它找不到该类。

更改名称空间以匹配YOUR_MODULE_NAME。

namespace Drupal\YOUR_MODULE_NAME\Plugin\migrate\source; 

当谷歌搜索PSR0时,可以找到关于命名空间的更多信息。