【问题标题】:Drupal 8 JSON migration process plugin callback. Unix to date conversionDrupal 8 JSON 迁移过程插件回调。 Unix 到日期转换
【发布时间】:2017-02-21 07:24:09
【问题描述】:

我正在编写一个自定义迁移模块来将一些数据从 JSON 提要移动到 Drupal 8。

我在内容类型中有基本字符串,但在安装 yml 文件的过程阶段似乎无法转换 unix 时间格式。

我有

process:
  field_post_date:
    -
      plugin: callback
      callable: date
      source: publish_date

当前 输入 - 1486573222000 输出 - 1486573222000

我想要 输入 - 1486573222000 输出 - 02-08-2017T17:00:22

如果可能的话,我希望能够将参数传递给自定义 php 函数,并且我想我可以让它工作。不知道如何查看这里的文档https://www.drupal.org/docs/8/api/migrate-api/migrate-process/process-plugin-callback,但似乎仍然可以弄清楚。

任何帮助将不胜感激。

【问题讨论】:

    标签: php unix drupal database-migration drupal-8


    【解决方案1】:

    https://www.drupal.org/node/2820490。一旦该补丁登陆,该方法将成为核心,但在此之前您必须安装该补丁并使用 format_date 进程插件。回调不起作用,因为您必须将多个参数传递给回调,而这是不可能的。

    【讨论】:

    • 我相信我可以用一个论点来做到这一点。您能否提供将 1 个参数传递给 php 函数然后返回 yml 标记的示例?
    • 为什么不能使用已经提供的流程插件?它将任何格式的任何日期字符串格式化为任何格式。
    • 你的权利对这一切来说有点新鲜,我最终将我的代码移动到一个自定义流程插件中!谢谢
    【解决方案2】:

    无法完全按照我想要的方式工作,所以我编写了一个 php 函数来格式化 json 文件中的日期,然后再运行 drush mi ***。它解析 Date 并在 unix 以毫秒为单位时更新。

    <!-- This is a custom php function to convert time stamps from unix to MM-DD-YYYYTHR:MM:SS which is accepted by drupal Date field type-->
    <?php 
    date_default_timezone_set('GMT'); 
    $json = file_get_contents("**your-url**.json");
    $array = json_decode($json);
    foreach($array->blog_posts as $item){
        echo "<br>";
        $num = $item->publish_date;
        $int = (int)$num;
        $float = (float)$num;
        $epoch = $float;
        $seconds = $epoch * .001;
        $item->publish_date = gmdate('Y-m-d',$seconds)."T".gmdate('H:i:s',$seconds);
    }
    foreach($array->blog_posts as $item1){
        echo $item1->updated;
        echo "<br>";
        $num = $item1->updated;
        $int = (int)$num;
        $float = (float)$num;
        $epoch = $float;
        $seconds = $epoch * .001;
        $item1->updated = $seconds;
    }
    file_put_contents('**export**.json', json_encode($array));
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-13
      • 2019-04-15
      • 1970-01-01
      • 2015-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多