首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Migrate循环数组

使用Migrate循环数组
EN

Drupal用户
提问于 2020-06-02 04:33:01
回答 1查看 744关注 0票数 0

我正在尝试遍历JSON迁移源中的数组(称为“属性”),但我不知道如何实现。下面是我的数据源的一个简短示例:

代码语言:javascript
运行
复制
[
  {
    "Id": "ST00000002",
    "Title": "Fast & Furious 9",
    "Attributes": [
      "0000000013",
      "0000000015"
    ]
  }
]

我的最终目标是根据这些属性值检查某些复选框/布尔字段,但我不知道如何单独处理每个属性。

到目前为止我尝试过的事情:

  • 使用single_valuemultiple_values
  • 使用自定义的Deepen进程插件(如本期上所示)
  • 使用sub_process
  • 使用static_map插件(可以这样做):
代码语言:javascript
运行
复制
map:
    '0000000015': 1
default_value: 0
  • skip_on_valuenot_equals: true的结合
  • 使用上述函数的无数组合

我觉得这不可能像我所做的那样困难,所以我希望有人能帮助我。非常感谢。

EN

回答 1

Drupal用户

发布于 2020-06-02 13:27:40

非常感谢。我使用"in_array“创建了一个定制的进程插件,就像建议的那样。如果有人感兴趣,下面是我创建的插件:

代码语言:javascript
运行
复制
namespace Drupal\migrate_veezi\Plugin\migrate\process;

use Drupal\migrate\ProcessPluginBase;
use Drupal\migrate\MigrateException;
use Drupal\migrate\MigrateExecutableInterface;
use Drupal\migrate\Row;

/**
 * Check if value exists in array
 *
 * @MigrateProcessPlugin(
 *   id = "in_array"
 * )
 *
 * To check if value is in array, use the following:
 *
 * @code
 * field_text:
 *   plugin: in_array
 *   source: array
 *   search: 'string'
 * @endcode
 *
 */

class InArray extends ProcessPluginBase {

  /**
   * {@inheritdoc}
   */
  public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {

    $search = $this->configuration['search'];

    if ($search) {
      if (is_array($value) || $value instanceof \Traversable) {
        return in_array($search, $value);
      }
      else {
        throw new MigrateException(sprintf('%s is not traversable', var_export($value, TRUE)));
      }
    }
    else {
      throw new MigrateException(sprintf('search value is not set'));
    }
  }

}

然后我就这样用了它:

代码语言:javascript
运行
复制
field_closed_caption:
    -
      plugin: single_value
      source: attributes
    -
      plugin: in_array
      search: '0000000007'
票数 0
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/294165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档