Php Drupal8JSON迁移过程插件回调。Unix到日期转换
我正在编写一个自定义迁移模块,将一些数据从JSON提要移动到Drupal8中 我在内容类型中有基本字符串,但在安装yml文件的过程阶段,似乎无法转换unix时间格式 我有Php Drupal8JSON迁移过程插件回调。Unix到日期转换,php,unix,drupal,database-migration,drupal-8,Php,Unix,Drupal,Database Migration,Drupal 8,我正在编写一个自定义迁移模块,将一些数据从JSON提要移动到Drupal8中 我在内容类型中有基本字符串,但在安装yml文件的过程阶段,似乎无法转换unix时间格式 我有 process: field_post_date: - plugin: callback callable: date source: publish_date 当前 输入-1486573222000 产出-1486573222000 我想要 输入-1486573222000
process:
field_post_date:
-
plugin: callback
callable: date
source: publish_date
当前
输入-1486573222000
产出-1486573222000
我想要
输入-1486573222000
输出-02-08-2017T17:00:22
如果可能的话,我希望能够将一个参数传递到一个定制的php函数中,我想我可以让它工作。我不知道你怎么看这里的文件,但似乎还是能弄明白
任何帮助都将不胜感激。请参阅。一旦该补丁登陆,该方法将进入核心,但在此之前,您必须安装该补丁并使用format_date process插件。回调不起作用,因为您必须向回调传递多个参数,这是不可能的。无法按照我希望的方式工作,因此我在运行drush mi***之前编写了一个php函数来格式化json文件中的日期。它解析日期,并在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));
?>
我相信只要一个参数就可以做到。您能否提供一个将1个参数传递给php函数然后返回yml标记的示例?为什么您不能使用已经提供的流程插件?它可以将任何格式的日期字符串格式化为任何格式。你的右键对所有这些都是新的,我最终将我的代码移动到了一个自定义的进程插件中!谢谢