Обратный вызов плагина процесса миграции JSON в Drupal 8. Unix для преобразования даты

Я пишу пользовательский модуль миграции, чтобы перенести некоторые данные из потока JSON в Drupal 8.

У меня есть базовые строки, идущие в тип содержимого, но не могу конвертировать формат времени Unix во время фазы процесса в файле установки yml.

я имею

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 но все еще может казаться, чтобы понять это.

Любая помощь будет оценена.

0

Решение

Увидеть https://www.drupal.org/node/2820490. Как только этот патч появится, метод будет в ядре, но до тех пор вы должны установить этот патч и использовать плагин процесса format_date. Обратный вызов не будет работать, потому что вам нужно передать несколько аргументов обратному вызову, а это просто невозможно.

0

Другие решения

Не удалось заставить это работать так, как я хотел, поэтому я написал функцию php для форматирования даты в файле json перед запуском drush mi ***. Он анализирует дату и обновляется, когда 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));
?>
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector